import string, gettext
_ = gettext.gettext

try:
    frozenset
except NameError:
    # Import from the sets module for python 2.3
    from sets import Set as set
    from sets import ImmutableSet as frozenset

EOF = None

E = {
    "null-character": 
       _(u"Null character in input stream, replaced with U+FFFD."),
    "invalid-codepoint": 
       _(u"Invalid codepoint in stream."),
    "incorrectly-placed-solidus":
       _(u"Solidus (/) incorrectly placed in tag."),
    "incorrect-cr-newline-entity":
       _(u"Incorrect CR newline entity, replaced with LF."),
    "illegal-windows-1252-entity":
       _(u"Entity used with illegal number (windows-1252 reference)."),
    "cant-convert-numeric-entity":
       _(u"Numeric entity couldn't be converted to character "
         u"(codepoint U+%(charAsInt)08x)."),
    "illegal-codepoint-for-numeric-entity":
       _(u"Numeric entity represents an illegal codepoint: "
         u"U+%(charAsInt)08x."),
    "numeric-entity-without-semicolon":
       _(u"Numeric entity didn't end with ';'."),
    "expected-numeric-entity-but-got-eof":
       _(u"Numeric entity expected. Got end of file instead."),
    "expected-numeric-entity":
       _(u"Numeric entity expected but none found."),
    "named-entity-without-semicolon":
       _(u"Named entity didn't end with ';'."),
    "expected-named-entity":
       _(u"Named entity expected. Got none."),
    "attributes-in-end-tag":
       _(u"End tag contains unexpected attributes."),
    'self-closing-flag-on-end-tag':
        _(u"End tag contains unexpected self-closing flag."),
    "expected-tag-name-but-got-right-bracket":
       _(u"Expected tag name. Got '>' instead."),
    "expected-tag-name-but-got-question-mark":
       _(u"Expected tag name. Got '?' instead. (HTML doesn't "
         u"support processing instructions.)"),
    "expected-tag-name":
       _(u"Expected tag name. Got something else instead"),
    "expected-closing-tag-but-got-right-bracket":
       _(u"Expected closing tag. Got '>' instead. Ignoring '</>'."),
    "expected-closing-tag-but-got-eof":
       _(u"Expected closing tag. Unexpected end of file."),
    "expected-closing-tag-but-got-char":
       _(u"Expected closing tag. Unexpected character '%(data)s' found."),
    "eof-in-tag-name":
       _(u"Unexpected end of file in the tag name."),
    "expected-attribute-name-but-got-eof":
       _(u"Unexpected end of file. Expected attribute name instead."),
    "eof-in-attribute-name":
       _(u"Unexpected end of file in attribute name."),
    "invalid-character-in-attribute-name":
        _(u"Invalid chracter in attribute name"),
    "duplicate-attribute":
       _(u"Dropped duplicate attribute on tag."),
    "expected-end-of-tag-name-but-got-eof":
       _(u"Unexpected end of file. Expected = or end of tag."),
    "expected-attribute-value-but-got-eof":
       _(u"Unexpected end of file. Expected attribute value."),
    "expected-attribute-value-but-got-right-bracket":
       _(u"Expected attribute value. Got '>' instead."),
    'equals-in-unquoted-attribute-value':
        _(u"Unexpected = in unquoted attribute"),
    'unexpected-character-in-unquoted-attribute-value':
        _(u"Unexpected character in unquoted attribute"),
    "invalid-character-after-attribute-name":
       _(u"Unexpected character after attribute name."),
    "unexpected-character-after-attribute-value":
       _(u"Unexpected character after attribute value."),
    "eof-in-attribute-value-double-quote":
       _(u"Unexpected end of file in attribute value (\")."),
    "eof-in-attribute-value-single-quote":
       _(u"Unexpected end of file in attribute value (')."),
    "eof-in-attribute-value-no-quotes":
       _(u"Unexpected end of file in attribute value."),
    "unexpected-EOF-after-solidus-in-tag":
        _(u"Unexpected end of file in tag. Expected >"),
    "unexpected-character-after-soldius-in-tag":
        _(u"Unexpected character after / in tag. Expected >"),
    "expected-dashes-or-doctype":
       _(u"Expected '--' or 'DOCTYPE'. Not found."),
    "unexpected-bang-after-double-dash-in-comment":
        _(u"Unexpected ! after -- in comment"),
    "unexpected-space-after-double-dash-in-comment":
        _(u"Unexpected space after -- in comment"),
    "incorrect-comment":
       _(u"Incorrect comment."),
    "eof-in-comment":
       _(u"Unexpected end of file in comment."),
    "eof-in-comment-end-dash":
       _(u"Unexpected end of file in comment (-)"),
    "unexpected-dash-after-double-dash-in-comment":
       _(u"Unexpected '-' after '--' found in comment."),
    "eof-in-comment-double-dash":
       _(u"Unexpected end of file in comment (--)."),
    "eof-in-comment-end-space-state":
       _(u"Unexpected end of file in comment."),
    "eof-in-comment-end-bang-state":
       _(u"Unexpected end of file in comment."),
    "unexpected-char-in-comment":
       _(u"Unexpected character in comment found."),
    "need-space-after-doctype":
       _(u"No space after literal string 'DOCTYPE'."),
    "expected-doctype-name-but-got-right-bracket":
       _(u"Unexpected > character. Expected DOCTYPE name."),
    "expected-doctype-name-but-got-eof":
       _(u"Unexpected end of file. Expected DOCTYPE name."),
    "eof-in-doctype-name":
       _(u"Unexpected end of file in DOCTYPE name."),
    "eof-in-doctype":
       _(u"Unexpected end of file in DOCTYPE."),
    "expected-space-or-right-bracket-in-doctype":
       _(u"Expected space or '>'. Got '%(data)s'"),
    "unexpected-end-of-doctype":
       _(u"Unexpected end of DOCTYPE."),
    "unexpected-char-in-doctype":
       _(u"Unexpected character in DOCTYPE."),
    "eof-in-innerhtml":
       _(u"XXX innerHTML EOF"),
    "unexpected-doctype":
       _(u"Unexpected DOCTYPE. Ignored."),
    "non-html-root":
       _(u"html needs to be the first start tag."),
    "expected-doctype-but-got-eof":
       _(u"Unexpected End of file. Expected DOCTYPE."),
    "unknown-doctype":
       _(u"Erroneous DOCTYPE."),
    "expected-doctype-but-got-chars":
       _(u"Unexpected non-space characters. Expected DOCTYPE."),
    "expected-doctype-but-got-start-tag":
       _(u"Unexpected start tag (%(name)s). Expected DOCTYPE."),
    "expected-doctype-but-got-end-tag":
       _(u"Unexpected end tag (%(name)s). Expected DOCTYPE."),
    "end-tag-after-implied-root":
       _(u"Unexpected end tag (%(name)s) after the (implied) root element."),
    "expected-named-closing-tag-but-got-eof":
       _(u"Unexpected end of file. Expected end tag (%(name)s)."),
    "two-heads-are-not-better-than-one":
       _(u"Unexpected start tag head in existing head. Ignored."),
    "unexpected-end-tag":
       _(u"Unexpected end tag (%(name)s). Ignored."),
    "unexpected-start-tag-out-of-my-head":
       _(u"Unexpected start tag (%(name)s) that can be in head. Moved."),
    "unexpected-start-tag":
       _(u"Unexpected start tag (%(name)s)."),
    "missing-end-tag":
       _(u"Missing end tag (%(name)s)."),
    "missing-end-tags":
       _(u"Missing end tags (%(name)s)."),
    "unexpected-start-tag-implies-end-tag":
       _(u"Unexpected start tag (%(startName)s) "
         u"implies end tag (%(endName)s)."),
    "unexpected-start-tag-treated-as":
       _(u"Unexpected start tag (%(originalName)s). Treated as %(newName)s."),
    "deprecated-tag":
       _(u"Unexpected start tag %(name)s. Don't use it!"),
    "unexpected-start-tag-ignored":
       _(u"Unexpected start tag %(name)s. Ignored."),
    "expected-one-end-tag-but-got-another":
       _(u"Unexpected end tag (%(gotName)s). "
         u"Missing end tag (%(expectedName)s)."),
    "end-tag-too-early":
       _(u"End tag (%(name)s) seen too early. Expected other end tag."),
    "end-tag-too-early-named":
       _(u"Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s)."),
    "end-tag-too-early-ignored":
       _(u"End tag (%(name)s) seen too early. Ignored."),
    "adoption-agency-1.1":
       _(u"End tag (%(name)s) violates step 1, "
         u"paragraph 1 of the adoption agency algorithm."),
    "adoption-agency-1.2":
       _(u"End tag (%(name)s) violates step 1, "
         u"paragraph 2 of the adoption agency algorithm."),
    "adoption-agency-1.3":
       _(u"End tag (%(name)s) violates step 1, "
         u"paragraph 3 of the adoption agency algorithm."),
    "unexpected-end-tag-treated-as":
       _(u"Unexpected end tag (%(originalName)s). Treated as %(newName)s."),
    "no-end-tag":
       _(u"This element (%(name)s) has no end tag."),
    "unexpected-implied-end-tag-in-table":
       _(u"Unexpected implied end tag (%(name)s) in the table phase."),
    "unexpected-implied-end-tag-in-table-body":
       _(u"Unexpected implied end tag (%(name)s) in the table body phase."),
    "unexpected-char-implies-table-voodoo":
       _(u"Unexpected non-space characters in "
         u"table context caused voodoo mode."),
    "unexpected-hidden-input-in-table":
       _(u"Unexpected input with type hidden in table context."),
    "unexpected-form-in-table":
       _(u"Unexpected form in table context."),
    "unexpected-start-tag-implies-table-voodoo":
       _(u"Unexpected start tag (%(name)s) in "
         u"table context caused voodoo mode."),
    "unexpected-end-tag-implies-table-voodoo":
       _(u"Unexpected end tag (%(name)s) in "
         u"table context caused voodoo mode."),
    "unexpected-cell-in-table-body":
       _(u"Unexpected table cell start tag (%(name)s) "
         u"in the table body phase."),
    "unexpected-cell-end-tag":
       _(u"Got table cell end tag (%(name)s) "
         u"while required end tags are missing."),
    "unexpected-end-tag-in-table-body":
       _(u"Unexpected end tag (%(name)s) in the table body phase. Ignored."),
    "unexpected-implied-end-tag-in-table-row":
       _(u"Unexpected implied end tag (%(name)s) in the table row phase."),
    "unexpected-end-tag-in-table-row":
       _(u"Unexpected end tag (%(name)s) in the table row phase. Ignored."),
    "unexpected-select-in-select":
       _(u"Unexpected select start tag in the select phase "
         u"treated as select end tag."),
    "unexpected-input-in-select":
       _(u"Unexpected input start tag in the select phase."),
    "unexpected-start-tag-in-select":
       _(u"Unexpected start tag token (%(name)s in the select phase. "
         u"Ignored."),
    "unexpected-end-tag-in-select":
       _(u"Unexpected end tag (%(name)s) in the select phase. Ignored."),
    "unexpected-table-element-start-tag-in-select-in-table":
       _(u"Unexpected table element start tag (%(name)s) in the select in table phase."),
    "unexpected-table-element-end-tag-in-select-in-table":
       _(u"Unexpected table element end tag (%(name)s) in the select in table phase."),
    "unexpected-char-after-body":
       _(u"Unexpected non-space characters in the after body phase."),
    "unexpected-start-tag-after-body":
       _(u"Unexpected start tag token (%(name)s)"
         u" in the after body phase."),
    "unexpected-end-tag-after-body":
       _(u"Unexpected end tag token (%(name)s)"
         u" in the after body phase."),
    "unexpected-char-in-frameset":
       _(u"Unepxected characters in the frameset phase. Characters ignored."),
    "unexpected-start-tag-in-frameset":
       _(u"Unexpected start tag token (%(name)s)"
         u" in the frameset phase. Ignored."),
    "unexpected-frameset-in-frameset-innerhtml":
       _(u"Unexpected end tag token (frameset) "
         u"in the frameset phase (innerHTML)."),
    "unexpected-end-tag-in-frameset":
       _(u"Unexpected end tag token (%(name)s)"
         u" in the frameset phase. Ignored."),
    "unexpected-char-after-frameset":
       _(u"Unexpected non-space characters in the "
         u"after frameset phase. Ignored."),
    "unexpected-start-tag-after-frameset":
       _(u"Unexpected start tag (%(name)s)"
         u" in the after frameset phase. Ignored."),
    "unexpected-end-tag-after-frameset":
       _(u"Unexpected end tag (%(name)s)"
         u" in the after frameset phase. Ignored."),
    "unexpected-end-tag-after-body-innerhtml":
       _(u"Unexpected end tag after body(innerHtml)"),
    "expected-eof-but-got-char":
       _(u"Unexpected non-space characters. Expected end of file."),
    "expected-eof-but-got-start-tag":
       _(u"Unexpected start tag (%(name)s)"
         u". Expected end of file."),
    "expected-eof-but-got-end-tag":
       _(u"Unexpected end tag (%(name)s)"
         u". Expected end of file."),
    "eof-in-table":
       _(u"Unexpected end of file. Expected table content."),
    "eof-in-select":
       _(u"Unexpected end of file. Expected select content."),
    "eof-in-frameset":
       _(u"Unexpected end of file. Expected frameset content."),
    "eof-in-script-in-script":
       _(u"Unexpected end of file. Expected script content."),
    "eof-in-foreign-lands":
       _(u"Unexpected end of file. Expected foreign content"),
    "non-void-element-with-trailing-solidus":
       _(u"Trailing solidus not allowed on element %(name)s"),
    "unexpected-html-element-in-foreign-content":
       _(u"Element %(name)s not allowed in a non-html context"),
    "unexpected-end-tag-before-html":
        _(u"Unexpected end tag (%(name)s) before html."),
    "XXX-undefined-error":
        (u"Undefined error (this sucks and should be fixed)"),
}

namespaces = {
    "html":"http://www.w3.org/1999/xhtml",
    "mathml":"http://www.w3.org/1998/Math/MathML",
    "svg":"http://www.w3.org/2000/svg",
    "xlink":"http://www.w3.org/1999/xlink",
    "xml":"http://www.w3.org/XML/1998/namespace",
    "xmlns":"http://www.w3.org/2000/xmlns/"
}

scopingElements = frozenset((
    (namespaces["html"], "applet"),
    (namespaces["html"], "caption"),
    (namespaces["html"], "html"),
    (namespaces["html"], "marquee"),
    (namespaces["html"], "object"),
    (namespaces["html"], "table"),
    (namespaces["html"], "td"),
    (namespaces["html"], "th"),
    (namespaces["svg"], "foreignObject")
))

formattingElements = frozenset((
    (namespaces["html"], "a"),
    (namespaces["html"], "b"),
    (namespaces["html"], "big"),
    (namespaces["html"], "code"),
    (namespaces["html"], "em"),
    (namespaces["html"], "font"),
    (namespaces["html"], "i"),
    (namespaces["html"], "nobr"),
    (namespaces["html"], "s"),
    (namespaces["html"], "small"),
    (namespaces["html"], "strike"),
    (namespaces["html"], "strong"),
    (namespaces["html"], "tt"),
    (namespaces["html"], "u")
))

specialElements = frozenset((
    (namespaces["html"], "address"),
    (namespaces["html"], "applet"),
    (namespaces["html"], "area"),
    (namespaces["html"], "article"),
    (namespaces["html"], "aside"),
    (namespaces["html"], "base"),
    (namespaces["html"], "basefont"),
    (namespaces["html"], "bgsound"),
    (namespaces["html"], "blockquote"),
    (namespaces["html"], "body"),
    (namespaces["html"], "br"),
    (namespaces["html"], "button"),
    (namespaces["html"], "caption"),
    (namespaces["html"], "center"),
    (namespaces["html"], "col"),
    (namespaces["html"], "colgroup"),
    (namespaces["html"], "command"),
    (namespaces["html"], "dd"),
    (namespaces["html"], "details"),
    (namespaces["html"], "dir"),
    (namespaces["html"], "div"),
    (namespaces["html"], "dl"),
    (namespaces["html"], "dt"),
    (namespaces["html"], "embed"),
    (namespaces["html"], "fieldset"),
    (namespaces["html"], "figure"),
    (namespaces["html"], "footer"),
    (namespaces["html"], "form"),
    (namespaces["html"], "frame"),
    (namespaces["html"], "frameset"),
    (namespaces["html"], "h1"),
    (namespaces["html"], "h2"),
    (namespaces["html"], "h3"),
    (namespaces["html"], "h4"),
    (namespaces["html"], "h5"),
    (namespaces["html"], "h6"),
    (namespaces["html"], "head"),
    (namespaces["html"], "header"),
    (namespaces["html"], "hr"),
    (namespaces["html"], "html"),
    (namespaces["html"], "iframe"),
    # Note that image is commented out in the spec as "this isn't an
    # element that can end up on the stack, so it doesn't matter,"
    (namespaces["html"], "image"), 
    (namespaces["html"], "img"),
    (namespaces["html"], "input"),
    (namespaces["html"], "isindex"),
    (namespaces["html"], "li"),
    (namespaces["html"], "link"),
    (namespaces["html"], "listing"),
    (namespaces["html"], "marquee"),
    (namespaces["html"], "menu"),
    (namespaces["html"], "meta"),
    (namespaces["html"], "nav"),
    (namespaces["html"], "noembed"),
    (namespaces["html"], "noframes"),
    (namespaces["html"], "noscript"),
    (namespaces["html"], "object"),
    (namespaces["html"], "ol"),
    (namespaces["html"], "p"),
    (namespaces["html"], "param"),
    (namespaces["html"], "plaintext"),
    (namespaces["html"], "pre"),
    (namespaces["html"], "script"),
    (namespaces["html"], "section"),
    (namespaces["html"], "select"),
    (namespaces["html"], "style"),
    (namespaces["html"], "table"),
    (namespaces["html"], "tbody"),
    (namespaces["html"], "td"),
    (namespaces["html"], "textarea"),
    (namespaces["html"], "tfoot"),
    (namespaces["html"], "th"),
    (namespaces["html"], "thead"),
    (namespaces["html"], "title"),
    (namespaces["html"], "tr"),
    (namespaces["html"], "ul"),
    (namespaces["html"], "wbr"),
    (namespaces["html"], "xmp"),
    (namespaces["svg"], "foreignObject")
))

spaceCharacters = frozenset((
    u"\t",
    u"\n",
    u"\u000C",
    u" ",
    u"\r"
))

tableInsertModeElements = frozenset((
    "table",
    "tbody",
    "tfoot",
    "thead",
    "tr"
))

asciiLowercase = frozenset(string.ascii_lowercase)
asciiUppercase = frozenset(string.ascii_uppercase)
asciiLetters = frozenset(string.ascii_letters)
digits = frozenset(string.digits)
hexDigits = frozenset(string.hexdigits)

asciiUpper2Lower = dict([(ord(c),ord(c.lower()))
    for c in string.ascii_uppercase])

# Heading elements need to be ordered
headingElements = (
    "h1",
    "h2",
    "h3",
    "h4",
    "h5",
    "h6"
)

voidElements = frozenset((
    "base",
    "command",
    "event-source",
    "link",
    "meta",
    "hr",
    "br",
    "img",
    "embed",
    "param",
    "area",
    "col",
    "input",
    "source"
))

cdataElements = frozenset(('title', 'textarea'))

rcdataElements = frozenset((
    'style',
    'script',
    'xmp',
    'iframe',
    'noembed',
    'noframes',
    'noscript'
))

booleanAttributes = {
    "": frozenset(("irrelevant",)),
    "style": frozenset(("scoped",)),
    "img": frozenset(("ismap",)),
    "audio": frozenset(("autoplay","controls")),
    "video": frozenset(("autoplay","controls")),
    "script": frozenset(("defer", "async")),
    "details": frozenset(("open",)),
    "datagrid": frozenset(("multiple", "disabled")),
    "command": frozenset(("hidden", "disabled", "checked", "default")),
    "hr": frozenset(("noshade")),
    "menu": frozenset(("autosubmit",)),
    "fieldset": frozenset(("disabled", "readonly")),
    "option": frozenset(("disabled", "readonly", "selected")),
    "optgroup": frozenset(("disabled", "readonly")),
    "button": frozenset(("disabled", "autofocus")),
    "input": frozenset(("disabled", "readonly", "required", "autofocus", "checked", "ismap")),
    "select": frozenset(("disabled", "readonly", "autofocus", "multiple")),
    "output": frozenset(("disabled", "readonly")),
}

# entitiesWindows1252 has to be _ordered_ and needs to have an index. It
# therefore can't be a frozenset.
entitiesWindows1252 = (
    8364,  # 0x80  0x20AC  EURO SIGN
    65533, # 0x81          UNDEFINED
    8218,  # 0x82  0x201A  SINGLE LOW-9 QUOTATION MARK
    402,   # 0x83  0x0192  LATIN SMALL LETTER F WITH HOOK
    8222,  # 0x84  0x201E  DOUBLE LOW-9 QUOTATION MARK
    8230,  # 0x85  0x2026  HORIZONTAL ELLIPSIS
    8224,  # 0x86  0x2020  DAGGER
    8225,  # 0x87  0x2021  DOUBLE DAGGER
    710,   # 0x88  0x02C6  MODIFIER LETTER CIRCUMFLEX ACCENT
    8240,  # 0x89  0x2030  PER MILLE SIGN
    352,   # 0x8A  0x0160  LATIN CAPITAL LETTER S WITH CARON
    8249,  # 0x8B  0x2039  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
    338,   # 0x8C  0x0152  LATIN CAPITAL LIGATURE OE
    65533, # 0x8D          UNDEFINED
    381,   # 0x8E  0x017D  LATIN CAPITAL LETTER Z WITH CARON
    65533, # 0x8F          UNDEFINED
    65533, # 0x90          UNDEFINED
    8216,  # 0x91  0x2018  LEFT SINGLE QUOTATION MARK
    8217,  # 0x92  0x2019  RIGHT SINGLE QUOTATION MARK
    8220,  # 0x93  0x201C  LEFT DOUBLE QUOTATION MARK
    8221,  # 0x94  0x201D  RIGHT DOUBLE QUOTATION MARK
    8226,  # 0x95  0x2022  BULLET
    8211,  # 0x96  0x2013  EN DASH
    8212,  # 0x97  0x2014  EM DASH
    732,   # 0x98  0x02DC  SMALL TILDE
    8482,  # 0x99  0x2122  TRADE MARK SIGN
    353,   # 0x9A  0x0161  LATIN SMALL LETTER S WITH CARON
    8250,  # 0x9B  0x203A  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
    339,   # 0x9C  0x0153  LATIN SMALL LIGATURE OE
    65533, # 0x9D          UNDEFINED
    382,   # 0x9E  0x017E  LATIN SMALL LETTER Z WITH CARON
    376    # 0x9F  0x0178  LATIN CAPITAL LETTER Y WITH DIAERESIS
)

xmlEntities = frozenset(('lt;', 'gt;', 'amp;', 'apos;', 'quot;'))

entities = {
    'AElig': u'\xc6',
    'AElig;': u'\xc6',
    'AMP': u'&',
    'AMP;': u'&',
    'Aacute': u'\xc1',
    'Aacute;': u'\xc1',
    'Abreve;': u'\u0102',
    'Acirc': u'\xc2',
    'Acirc;': u'\xc2',
    'Acy;': u'\u0410',
    'Afr;': u'\U0001d504',
    'Agrave': u'\xc0',
    'Agrave;': u'\xc0',
    'Alpha;': u'\u0391',
    'Amacr;': u'\u0100',
    'And;': u'\u2a53',
    'Aogon;': u'\u0104',
    'Aopf;': u'\U0001d538',
    'ApplyFunction;': u'\u2061',
    'Aring': u'\xc5',
    'Aring;': u'\xc5',
    'Ascr;': u'\U0001d49c',
    'Assign;': u'\u2254',
    'Atilde': u'\xc3',
    'Atilde;': u'\xc3',
    'Auml': u'\xc4',
    'Auml;': u'\xc4',
    'Backslash;': u'\u2216',
    'Barv;': u'\u2ae7',
    'Barwed;': u'\u2306',
    'Bcy;': u'\u0411',
    'Because;': u'\u2235',
    'Bernoullis;': u'\u212c',
    'Beta;': u'\u0392',
    'Bfr;': u'\U0001d505',
    'Bopf;': u'\U0001d539',
    'Breve;': u'\u02d8',
    'Bscr;': u'\u212c',
    'Bumpeq;': u'\u224e',
    'CHcy;': u'\u0427',
    'COPY': u'\xa9',
    'COPY;': u'\xa9',
    'Cacute;': u'\u0106',
    'Cap;': u'\u22d2',
    'CapitalDifferentialD;': u'\u2145',
    'Cayleys;': u'\u212d',
    'Ccaron;': u'\u010c',
    'Ccedil': u'\xc7',
    'Ccedil;': u'\xc7',
    'Ccirc;': u'\u0108',
    'Cconint;': u'\u2230',
    'Cdot;': u'\u010a',
    'Cedilla;': u'\xb8',
    'CenterDot;': u'\xb7',
    'Cfr;': u'\u212d',
    'Chi;': u'\u03a7',
    'CircleDot;': u'\u2299',
    'CircleMinus;': u'\u2296',
    'CirclePlus;': u'\u2295',
    'CircleTimes;': u'\u2297',
    'ClockwiseContourIntegral;': u'\u2232',
    'CloseCurlyDoubleQuote;': u'\u201d',
    'CloseCurlyQuote;': u'\u2019',
    'Colon;': u'\u2237',
    'Colone;': u'\u2a74',
    'Congruent;': u'\u2261',
    'Conint;': u'\u222f',
    'ContourIntegral;': u'\u222e',
    'Copf;': u'\u2102',
    'Coproduct;': u'\u2210',
    'CounterClockwiseContourIntegral;': u'\u2233',
    'Cross;': u'\u2a2f',
    'Cscr;': u'\U0001d49e',
    'Cup;': u'\u22d3',
    'CupCap;': u'\u224d',
    'DD;': u'\u2145',
    'DDotrahd;': u'\u2911',
    'DJcy;': u'\u0402',
    'DScy;': u'\u0405',
    'DZcy;': u'\u040f',
    'Dagger;': u'\u2021',
    'Darr;': u'\u21a1',
    'Dashv;': u'\u2ae4',
    'Dcaron;': u'\u010e',
    'Dcy;': u'\u0414',
    'Del;': u'\u2207',
    'Delta;': u'\u0394',
    'Dfr;': u'\U0001d507',
    'DiacriticalAcute;': u'\xb4',
    'DiacriticalDot;': u'\u02d9',
    'DiacriticalDoubleAcute;': u'\u02dd',
    'DiacriticalGrave;': u'`',
    'DiacriticalTilde;': u'\u02dc',
    'Diamond;': u'\u22c4',
    'DifferentialD;': u'\u2146',
    'Dopf;': u'\U0001d53b',
    'Dot;': u'\xa8',
    'DotDot;': u'\u20dc',
    'DotEqual;': u'\u2250',
    'DoubleContourIntegral;': u'\u222f',
    'DoubleDot;': u'\xa8',
    'DoubleDownArrow;': u'\u21d3',
    'DoubleLeftArrow;': u'\u21d0',
    'DoubleLeftRightArrow;': u'\u21d4',
    'DoubleLeftTee;': u'\u2ae4',
    'DoubleLongLeftArrow;': u'\u27f8',
    'DoubleLongLeftRightArrow;': u'\u27fa',
    'DoubleLongRightArrow;': u'\u27f9',
    'DoubleRightArrow;': u'\u21d2',
    'DoubleRightTee;': u'\u22a8',
    'DoubleUpArrow;': u'\u21d1',
    'DoubleUpDownArrow;': u'\u21d5',
    'DoubleVerticalBar;': u'\u2225',
    'DownArrow;': u'\u2193',
    'DownArrowBar;': u'\u2913',
    'DownArrowUpArrow;': u'\u21f5',
    'DownBreve;': u'\u0311',
    'DownLeftRightVector;': u'\u2950',
    'DownLeftTeeVector;': u'\u295e',
    'DownLeftVector;': u'\u21bd',
    'DownLeftVectorBar;': u'\u2956',
    'DownRightTeeVector;': u'\u295f',
    'DownRightVector;': u'\u21c1',
    'DownRightVectorBar;': u'\u2957',
    'DownTee;': u'\u22a4',
    'DownTeeArrow;': u'\u21a7',
    'Downarrow;': u'\u21d3',
    'Dscr;': u'\U0001d49f',
    'Dstrok;': u'\u0110',
    'ENG;': u'\u014a',
    'ETH': u'\xd0',
    'ETH;': u'\xd0',
    'Eacute': u'\xc9',
    'Eacute;': u'\xc9',
    'Ecaron;': u'\u011a',
    'Ecirc': u'\xca',
    'Ecirc;': u'\xca',
    'Ecy;': u'\u042d',
    'Edot;': u'\u0116',
    'Efr;': u'\U0001d508',
    'Egrave': u'\xc8',
    'Egrave;': u'\xc8',
    'Element;': u'\u2208',
    'Emacr;': u'\u0112',
    'EmptySmallSquare;': u'\u25fb',
    'EmptyVerySmallSquare;': u'\u25ab',
    'Eogon;': u'\u0118',
    'Eopf;': u'\U0001d53c',
    'Epsilon;': u'\u0395',
    'Equal;': u'\u2a75',
    'EqualTilde;': u'\u2242',
    'Equilibrium;': u'\u21cc',
    'Escr;': u'\u2130',
    'Esim;': u'\u2a73',
    'Eta;': u'\u0397',
    'Euml': u'\xcb',
    'Euml;': u'\xcb',
    'Exists;': u'\u2203',
    'ExponentialE;': u'\u2147',
    'Fcy;': u'\u0424',
    'Ffr;': u'\U0001d509',
    'FilledSmallSquare;': u'\u25fc',
    'FilledVerySmallSquare;': u'\u25aa',
    'Fopf;': u'\U0001d53d',
    'ForAll;': u'\u2200',
    'Fouriertrf;': u'\u2131',
    'Fscr;': u'\u2131',
    'GJcy;': u'\u0403',
    'GT': u'>',
    'GT;': u'>',
    'Gamma;': u'\u0393',
    'Gammad;': u'\u03dc',
    'Gbreve;': u'\u011e',
    'Gcedil;': u'\u0122',
    'Gcirc;': u'\u011c',
    'Gcy;': u'\u0413',
    'Gdot;': u'\u0120',
    'Gfr;': u'\U0001d50a',
    'Gg;': u'\u22d9',
    'Gopf;': u'\U0001d53e',
    'GreaterEqual;': u'\u2265',
    'GreaterEqualLess;': u'\u22db',
    'GreaterFullEqual;': u'\u2267',
    'GreaterGreater;': u'\u2aa2',
    'GreaterLess;': u'\u2277',
    'GreaterSlantEqual;': u'\u2a7e',
    'GreaterTilde;': u'\u2273',
    'Gscr;': u'\U0001d4a2',
    'Gt;': u'\u226b',
    'HARDcy;': u'\u042a',
    'Hacek;': u'\u02c7',
    'Hat;': u'^',
    'Hcirc;': u'\u0124',
    'Hfr;': u'\u210c',
    'HilbertSpace;': u'\u210b',
    'Hopf;': u'\u210d',
    'HorizontalLine;': u'\u2500',
    'Hscr;': u'\u210b',
    'Hstrok;': u'\u0126',
    'HumpDownHump;': u'\u224e',
    'HumpEqual;': u'\u224f',
    'IEcy;': u'\u0415',
    'IJlig;': u'\u0132',
    'IOcy;': u'\u0401',
    'Iacute': u'\xcd',
    'Iacute;': u'\xcd',
    'Icirc': u'\xce',
    'Icirc;': u'\xce',
    'Icy;': u'\u0418',
    'Idot;': u'\u0130',
    'Ifr;': u'\u2111',
    'Igrave': u'\xcc',
    'Igrave;': u'\xcc',
    'Im;': u'\u2111',
    'Imacr;': u'\u012a',
    'ImaginaryI;': u'\u2148',
    'Implies;': u'\u21d2',
    'Int;': u'\u222c',
    'Integral;': u'\u222b',
    'Intersection;': u'\u22c2',
    'InvisibleComma;': u'\u2063',
    'InvisibleTimes;': u'\u2062',
    'Iogon;': u'\u012e',
    'Iopf;': u'\U0001d540',
    'Iota;': u'\u0399',
    'Iscr;': u'\u2110',
    'Itilde;': u'\u0128',
    'Iukcy;': u'\u0406',
    'Iuml': u'\xcf',
    'Iuml;': u'\xcf',
    'Jcirc;': u'\u0134',
    'Jcy;': u'\u0419',
    'Jfr;': u'\U0001d50d',
    'Jopf;': u'\U0001d541',
    'Jscr;': u'\U0001d4a5',
    'Jsercy;': u'\u0408',
    'Jukcy;': u'\u0404',
    'KHcy;': u'\u0425',
    'KJcy;': u'\u040c',
    'Kappa;': u'\u039a',
    'Kcedil;': u'\u0136',
    'Kcy;': u'\u041a',
    'Kfr;': u'\U0001d50e',
    'Kopf;': u'\U0001d542',
    'Kscr;': u'\U0001d4a6',
    'LJcy;': u'\u0409',
    'LT': u'<',
    'LT;': u'<',
    'Lacute;': u'\u0139',
    'Lambda;': u'\u039b',
    'Lang;': u'\u27ea',
    'Laplacetrf;': u'\u2112',
    'Larr;': u'\u219e',
    'Lcaron;': u'\u013d',
    'Lcedil;': u'\u013b',
    'Lcy;': u'\u041b',
    'LeftAngleBracket;': u'\u27e8',
    'LeftArrow;': u'\u2190',
    'LeftArrowBar;': u'\u21e4',
    'LeftArrowRightArrow;': u'\u21c6',
    'LeftCeiling;': u'\u2308',
    'LeftDoubleBracket;': u'\u27e6',
    'LeftDownTeeVector;': u'\u2961',
    'LeftDownVector;': u'\u21c3',
    'LeftDownVectorBar;': u'\u2959',
    'LeftFloor;': u'\u230a',
    'LeftRightArrow;': u'\u2194',
    'LeftRightVector;': u'\u294e',
    'LeftTee;': u'\u22a3',
    'LeftTeeArrow;': u'\u21a4',
    'LeftTeeVector;': u'\u295a',
    'LeftTriangle;': u'\u22b2',
    'LeftTriangleBar;': u'\u29cf',
    'LeftTriangleEqual;': u'\u22b4',
    'LeftUpDownVector;': u'\u2951',
    'LeftUpTeeVector;': u'\u2960',
    'LeftUpVector;': u'\u21bf',
    'LeftUpVectorBar;': u'\u2958',
    'LeftVector;': u'\u21bc',
    'LeftVectorBar;': u'\u2952',
    'Leftarrow;': u'\u21d0',
    'Leftrightarrow;': u'\u21d4',
    'LessEqualGreater;': u'\u22da',
    'LessFullEqual;': u'\u2266',
    'LessGreater;': u'\u2276',
    'LessLess;': u'\u2aa1',
    'LessSlantEqual;': u'\u2a7d',
    'LessTilde;': u'\u2272',
    'Lfr;': u'\U0001d50f',
    'Ll;': u'\u22d8',
    'Lleftarrow;': u'\u21da',
    'Lmidot;': u'\u013f',
    'LongLeftArrow;': u'\u27f5',
    'LongLeftRightArrow;': u'\u27f7',
    'LongRightArrow;': u'\u27f6',
    'Longleftarrow;': u'\u27f8',
    'Longleftrightarrow;': u'\u27fa',
    'Longrightarrow;': u'\u27f9',
    'Lopf;': u'\U0001d543',
    'LowerLeftArrow;': u'\u2199',
    'LowerRightArrow;': u'\u2198',
    'Lscr;': u'\u2112',
    'Lsh;': u'\u21b0',
    'Lstrok;': u'\u0141',
    'Lt;': u'\u226a',
    'Map;': u'\u2905',
    'Mcy;': u'\u041c',
    'MediumSpace;': u'\u205f',
    'Mellintrf;': u'\u2133',
    'Mfr;': u'\U0001d510',
    'MinusPlus;': u'\u2213',
    'Mopf;': u'\U0001d544',
    'Mscr;': u'\u2133',
    'Mu;': u'\u039c',
    'NJcy;': u'\u040a',
    'Nacute;': u'\u0143',
    'Ncaron;': u'\u0147',
    'Ncedil;': u'\u0145',
    'Ncy;': u'\u041d',
    'NegativeMediumSpace;': u'\u200b',
    'NegativeThickSpace;': u'\u200b',
    'NegativeThinSpace;': u'\u200b',
    'NegativeVeryThinSpace;': u'\u200b',
    'NestedGreaterGreater;': u'\u226b',
    'NestedLessLess;': u'\u226a',
    'NewLine;': u'\n',
    'Nfr;': u'\U0001d511',
    'NoBreak;': u'\u2060',
    'NonBreakingSpace;': u'\xa0',
    'Nopf;': u'\u2115',
    'Not;': u'\u2aec',
    'NotCongruent;': u'\u2262',
    'NotCupCap;': u'\u226d',
    'NotDoubleVerticalBar;': u'\u2226',
    'NotElement;': u'\u2209',
    'NotEqual;': u'\u2260',
    'NotExists;': u'\u2204',
    'NotGreater;': u'\u226f',
    'NotGreaterEqual;': u'\u2271',
    'NotGreaterLess;': u'\u2279',
    'NotGreaterTilde;': u'\u2275',
    'NotLeftTriangle;': u'\u22ea',
    'NotLeftTriangleEqual;': u'\u22ec',
    'NotLess;': u'\u226e',
    'NotLessEqual;': u'\u2270',
    'NotLessGreater;': u'\u2278',
    'NotLessTilde;': u'\u2274',
    'NotPrecedes;': u'\u2280',
    'NotPrecedesSlantEqual;': u'\u22e0',
    'NotReverseElement;': u'\u220c',
    'NotRightTriangle;': u'\u22eb',
    'NotRightTriangleEqual;': u'\u22ed',
    'NotSquareSubsetEqual;': u'\u22e2',
    'NotSquareSupersetEqual;': u'\u22e3',
    'NotSubsetEqual;': u'\u2288',
    'NotSucceeds;': u'\u2281',
    'NotSucceedsSlantEqual;': u'\u22e1',
    'NotSupersetEqual;': u'\u2289',
    'NotTilde;': u'\u2241',
    'NotTildeEqual;': u'\u2244',
    'NotTildeFullEqual;': u'\u2247',
    'NotTildeTilde;': u'\u2249',
    'NotVerticalBar;': u'\u2224',
    'Nscr;': u'\U0001d4a9',
    'Ntilde': u'\xd1',
    'Ntilde;': u'\xd1',
    'Nu;': u'\u039d',
    'OElig;': u'\u0152',
    'Oacute': u'\xd3',
    'Oacute;': u'\xd3',
    'Ocirc': u'\xd4',
    'Ocirc;': u'\xd4',
    'Ocy;': u'\u041e',
    'Odblac;': u'\u0150',
    'Ofr;': u'\U0001d512',
    'Ograve': u'\xd2',
    'Ograve;': u'\xd2',
    'Omacr;': u'\u014c',
    'Omega;': u'\u03a9',
    'Omicron;': u'\u039f',
    'Oopf;': u'\U0001d546',
    'OpenCurlyDoubleQuote;': u'\u201c',
    'OpenCurlyQuote;': u'\u2018',
    'Or;': u'\u2a54',
    'Oscr;': u'\U0001d4aa',
    'Oslash': u'\xd8',
    'Oslash;': u'\xd8',
    'Otilde': u'\xd5',
    'Otilde;': u'\xd5',
    'Otimes;': u'\u2a37',
    'Ouml': u'\xd6',
    'Ouml;': u'\xd6',
    'OverBar;': u'\u203e',
    'OverBrace;': u'\u23de',
    'OverBracket;': u'\u23b4',
    'OverParenthesis;': u'\u23dc',
    'PartialD;': u'\u2202',
    'Pcy;': u'\u041f',
    'Pfr;': u'\U0001d513',
    'Phi;': u'\u03a6',
    'Pi;': u'\u03a0',
    'PlusMinus;': u'\xb1',
    'Poincareplane;': u'\u210c',
    'Popf;': u'\u2119',
    'Pr;': u'\u2abb',
    'Precedes;': u'\u227a',
    'PrecedesEqual;': u'\u2aaf',
    'PrecedesSlantEqual;': u'\u227c',
    'PrecedesTilde;': u'\u227e',
    'Prime;': u'\u2033',
    'Product;': u'\u220f',
    'Proportion;': u'\u2237',
    'Proportional;': u'\u221d',
    'Pscr;': u'\U0001d4ab',
    'Psi;': u'\u03a8',
    'QUOT': u'"',
    'QUOT;': u'"',
    'Qfr;': u'\U0001d514',
    'Qopf;': u'\u211a',
    'Qscr;': u'\U0001d4ac',
    'RBarr;': u'\u2910',
    'REG': u'\xae',
    'REG;': u'\xae',
    'Racute;': u'\u0154',
    'Rang;': u'\u27eb',
    'Rarr;': u'\u21a0',
    'Rarrtl;': u'\u2916',
    'Rcaron;': u'\u0158',
    'Rcedil;': u'\u0156',
    'Rcy;': u'\u0420',
    'Re;': u'\u211c',
    'ReverseElement;': u'\u220b',
    'ReverseEquilibrium;': u'\u21cb',
    'ReverseUpEquilibrium;': u'\u296f',
    'Rfr;': u'\u211c',
    'Rho;': u'\u03a1',
    'RightAngleBracket;': u'\u27e9',
    'RightArrow;': u'\u2192',
    'RightArrowBar;': u'\u21e5',
    'RightArrowLeftArrow;': u'\u21c4',
    'RightCeiling;': u'\u2309',
    'RightDoubleBracket;': u'\u27e7',
    'RightDownTeeVector;': u'\u295d',
    'RightDownVector;': u'\u21c2',
    'RightDownVectorBar;': u'\u2955',
    'RightFloor;': u'\u230b',
    'RightTee;': u'\u22a2',
    'RightTeeArrow;': u'\u21a6',
    'RightTeeVector;': u'\u295b',
    'RightTriangle;': u'\u22b3',
    'RightTriangleBar;': u'\u29d0',
    'RightTriangleEqual;': u'\u22b5',
    'RightUpDownVector;': u'\u294f',
    'RightUpTeeVector;': u'\u295c',
    'RightUpVector;': u'\u21be',
    'RightUpVectorBar;': u'\u2954',
    'RightVector;': u'\u21c0',
    'RightVectorBar;': u'\u2953',
    'Rightarrow;': u'\u21d2',
    'Ropf;': u'\u211d',
    'RoundImplies;': u'\u2970',
    'Rrightarrow;': u'\u21db',
    'Rscr;': u'\u211b',
    'Rsh;': u'\u21b1',
    'RuleDelayed;': u'\u29f4',
    'SHCHcy;': u'\u0429',
    'SHcy;': u'\u0428',
    'SOFTcy;': u'\u042c',
    'Sacute;': u'\u015a',
    'Sc;': u'\u2abc',
    'Scaron;': u'\u0160',
    'Scedil;': u'\u015e',
    'Scirc;': u'\u015c',
    'Scy;': u'\u0421',
    'Sfr;': u'\U0001d516',
    'ShortDownArrow;': u'\u2193',
    'ShortLeftArrow;': u'\u2190',
    'ShortRightArrow;': u'\u2192',
    'ShortUpArrow;': u'\u2191',
    'Sigma;': u'\u03a3',
    'SmallCircle;': u'\u2218',
    'Sopf;': u'\U0001d54a',
    'Sqrt;': u'\u221a',
    'Square;': u'\u25a1',
    'SquareIntersection;': u'\u2293',
    'SquareSubset;': u'\u228f',
    'SquareSubsetEqual;': u'\u2291',
    'SquareSuperset;': u'\u2290',
    'SquareSupersetEqual;': u'\u2292',
    'SquareUnion;': u'\u2294',
    'Sscr;': u'\U0001d4ae',
    'Star;': u'\u22c6',
    'Sub;': u'\u22d0',
    'Subset;': u'\u22d0',
    'SubsetEqual;': u'\u2286',
    'Succeeds;': u'\u227b',
    'SucceedsEqual;': u'\u2ab0',
    'SucceedsSlantEqual;': u'\u227d',
    'SucceedsTilde;': u'\u227f',
    'SuchThat;': u'\u220b',
    'Sum;': u'\u2211',
    'Sup;': u'\u22d1',
    'Superset;': u'\u2283',
    'SupersetEqual;': u'\u2287',
    'Supset;': u'\u22d1',
    'THORN': u'\xde',
    'THORN;': u'\xde',
    'TRADE;': u'\u2122',
    'TSHcy;': u'\u040b',
    'TScy;': u'\u0426',
    'Tab;': u'\t',
    'Tau;': u'\u03a4',
    'Tcaron;': u'\u0164',
    'Tcedil;': u'\u0162',
    'Tcy;': u'\u0422',
    'Tfr;': u'\U0001d517',
    'Therefore;': u'\u2234',
    'Theta;': u'\u0398',
    'ThinSpace;': u'\u2009',
    'Tilde;': u'\u223c',
    'TildeEqual;': u'\u2243',
    'TildeFullEqual;': u'\u2245',
    'TildeTilde;': u'\u2248',
    'Topf;': u'\U0001d54b',
    'TripleDot;': u'\u20db',
    'Tscr;': u'\U0001d4af',
    'Tstrok;': u'\u0166',
    'Uacute': u'\xda',
    'Uacute;': u'\xda',
    'Uarr;': u'\u219f',
    'Uarrocir;': u'\u2949',
    'Ubrcy;': u'\u040e',
    'Ubreve;': u'\u016c',
    'Ucirc': u'\xdb',
    'Ucirc;': u'\xdb',
    'Ucy;': u'\u0423',
    'Udblac;': u'\u0170',
    'Ufr;': u'\U0001d518',
    'Ugrave': u'\xd9',
    'Ugrave;': u'\xd9',
    'Umacr;': u'\u016a',
    'UnderBar;': u'_',
    'UnderBrace;': u'\u23df',
    'UnderBracket;': u'\u23b5',
    'UnderParenthesis;': u'\u23dd',
    'Union;': u'\u22c3',
    'UnionPlus;': u'\u228e',
    'Uogon;': u'\u0172',
    'Uopf;': u'\U0001d54c',
    'UpArrow;': u'\u2191',
    'UpArrowBar;': u'\u2912',
    'UpArrowDownArrow;': u'\u21c5',
    'UpDownArrow;': u'\u2195',
    'UpEquilibrium;': u'\u296e',
    'UpTee;': u'\u22a5',
    'UpTeeArrow;': u'\u21a5',
    'Uparrow;': u'\u21d1',
    'Updownarrow;': u'\u21d5',
    'UpperLeftArrow;': u'\u2196',
    'UpperRightArrow;': u'\u2197',
    'Upsi;': u'\u03d2',
    'Upsilon;': u'\u03a5',
    'Uring;': u'\u016e',
    'Uscr;': u'\U0001d4b0',
    'Utilde;': u'\u0168',
    'Uuml': u'\xdc',
    'Uuml;': u'\xdc',
    'VDash;': u'\u22ab',
    'Vbar;': u'\u2aeb',
    'Vcy;': u'\u0412',
    'Vdash;': u'\u22a9',
    'Vdashl;': u'\u2ae6',
    'Vee;': u'\u22c1',
    'Verbar;': u'\u2016',
    'Vert;': u'\u2016',
    'VerticalBar;': u'\u2223',
    'VerticalLine;': u'|',
    'VerticalSeparator;': u'\u2758',
    'VerticalTilde;': u'\u2240',
    'VeryThinSpace;': u'\u200a',
    'Vfr;': u'\U0001d519',
    'Vopf;': u'\U0001d54d',
    'Vscr;': u'\U0001d4b1',
    'Vvdash;': u'\u22aa',
    'Wcirc;': u'\u0174',
    'Wedge;': u'\u22c0',
    'Wfr;': u'\U0001d51a',
    'Wopf;': u'\U0001d54e',
    'Wscr;': u'\U0001d4b2',
    'Xfr;': u'\U0001d51b',
    'Xi;': u'\u039e',
    'Xopf;': u'\U0001d54f',
    'Xscr;': u'\U0001d4b3',
    'YAcy;': u'\u042f',
    'YIcy;': u'\u0407',
    'YUcy;': u'\u042e',
    'Yacute': u'\xdd',
    'Yacute;': u'\xdd',
    'Ycirc;': u'\u0176',
    'Ycy;': u'\u042b',
    'Yfr;': u'\U0001d51c',
    'Yopf;': u'\U0001d550',
    'Yscr;': u'\U0001d4b4',
    'Yuml;': u'\u0178',
    'ZHcy;': u'\u0416',
    'Zacute;': u'\u0179',
    'Zcaron;': u'\u017d',
    'Zcy;': u'\u0417',
    'Zdot;': u'\u017b',
    'ZeroWidthSpace;': u'\u200b',
    'Zeta;': u'\u0396',
    'Zfr;': u'\u2128',
    'Zopf;': u'\u2124',
    'Zscr;': u'\U0001d4b5',
    'aacute': u'\xe1',
    'aacute;': u'\xe1',
    'abreve;': u'\u0103',
    'ac;': u'\u223e',
    'acd;': u'\u223f',
    'acirc': u'\xe2',
    'acirc;': u'\xe2',
    'acute': u'\xb4',
    'acute;': u'\xb4',
    'acy;': u'\u0430',
    'aelig': u'\xe6',
    'aelig;': u'\xe6',
    'af;': u'\u2061',
    'afr;': u'\U0001d51e',
    'agrave': u'\xe0',
    'agrave;': u'\xe0',
    'alefsym;': u'\u2135',
    'aleph;': u'\u2135',
    'alpha;': u'\u03b1',
    'amacr;': u'\u0101',
    'amalg;': u'\u2a3f',
    'amp': u'&',
    'amp;': u'&',
    'and;': u'\u2227',
    'andand;': u'\u2a55',
    'andd;': u'\u2a5c',
    'andslope;': u'\u2a58',
    'andv;': u'\u2a5a',
    'ang;': u'\u2220',
    'ange;': u'\u29a4',
    'angle;': u'\u2220',
    'angmsd;': u'\u2221',
    'angmsdaa;': u'\u29a8',
    'angmsdab;': u'\u29a9',
    'angmsdac;': u'\u29aa',
    'angmsdad;': u'\u29ab',
    'angmsdae;': u'\u29ac',
    'angmsdaf;': u'\u29ad',
    'angmsdag;': u'\u29ae',
    'angmsdah;': u'\u29af',
    'angrt;': u'\u221f',
    'angrtvb;': u'\u22be',
    'angrtvbd;': u'\u299d',
    'angsph;': u'\u2222',
    'angst;': u'\xc5',
    'angzarr;': u'\u237c',
    'aogon;': u'\u0105',
    'aopf;': u'\U0001d552',
    'ap;': u'\u2248',
    'apE;': u'\u2a70',
    'apacir;': u'\u2a6f',
    'ape;': u'\u224a',
    'apid;': u'\u224b',
    'apos;': u"'",
    'approx;': u'\u2248',
    'approxeq;': u'\u224a',
    'aring': u'\xe5',
    'aring;': u'\xe5',
    'ascr;': u'\U0001d4b6',
    'ast;': u'*',
    'asymp;': u'\u2248',
    'asympeq;': u'\u224d',
    'atilde': u'\xe3',
    'atilde;': u'\xe3',
    'auml': u'\xe4',
    'auml;': u'\xe4',
    'awconint;': u'\u2233',
    'awint;': u'\u2a11',
    'bNot;': u'\u2aed',
    'backcong;': u'\u224c',
    'backepsilon;': u'\u03f6',
    'backprime;': u'\u2035',
    'backsim;': u'\u223d',
    'backsimeq;': u'\u22cd',
    'barvee;': u'\u22bd',
    'barwed;': u'\u2305',
    'barwedge;': u'\u2305',
    'bbrk;': u'\u23b5',
    'bbrktbrk;': u'\u23b6',
    'bcong;': u'\u224c',
    'bcy;': u'\u0431',
    'bdquo;': u'\u201e',
    'becaus;': u'\u2235',
    'because;': u'\u2235',
    'bemptyv;': u'\u29b0',
    'bepsi;': u'\u03f6',
    'bernou;': u'\u212c',
    'beta;': u'\u03b2',
    'beth;': u'\u2136',
    'between;': u'\u226c',
    'bfr;': u'\U0001d51f',
    'bigcap;': u'\u22c2',
    'bigcirc;': u'\u25ef',
    'bigcup;': u'\u22c3',
    'bigodot;': u'\u2a00',
    'bigoplus;': u'\u2a01',
    'bigotimes;': u'\u2a02',
    'bigsqcup;': u'\u2a06',
    'bigstar;': u'\u2605',
    'bigtriangledown;': u'\u25bd',
    'bigtriangleup;': u'\u25b3',
    'biguplus;': u'\u2a04',
    'bigvee;': u'\u22c1',
    'bigwedge;': u'\u22c0',
    'bkarow;': u'\u290d',
    'blacklozenge;': u'\u29eb',
    'blacksquare;': u'\u25aa',
    'blacktriangle;': u'\u25b4',
    'blacktriangledown;': u'\u25be',
    'blacktriangleleft;': u'\u25c2',
    'blacktriangleright;': u'\u25b8',
    'blank;': u'\u2423',
    'blk12;': u'\u2592',
    'blk14;': u'\u2591',
    'blk34;': u'\u2593',
    'block;': u'\u2588',
    'bnot;': u'\u2310',
    'bopf;': u'\U0001d553',
    'bot;': u'\u22a5',
    'bottom;': u'\u22a5',
    'bowtie;': u'\u22c8',
    'boxDL;': u'\u2557',
    'boxDR;': u'\u2554',
    'boxDl;': u'\u2556',
    'boxDr;': u'\u2553',
    'boxH;': u'\u2550',
    'boxHD;': u'\u2566',
    'boxHU;': u'\u2569',
    'boxHd;': u'\u2564',
    'boxHu;': u'\u2567',
    'boxUL;': u'\u255d',
    'boxUR;': u'\u255a',
    'boxUl;': u'\u255c',
    'boxUr;': u'\u2559',
    'boxV;': u'\u2551',
    'boxVH;': u'\u256c',
    'boxVL;': u'\u2563',
    'boxVR;': u'\u2560',
    'boxVh;': u'\u256b',
    'boxVl;': u'\u2562',
    'boxVr;': u'\u255f',
    'boxbox;': u'\u29c9',
    'boxdL;': u'\u2555',
    'boxdR;': u'\u2552',
    'boxdl;': u'\u2510',
    'boxdr;': u'\u250c',
    'boxh;': u'\u2500',
    'boxhD;': u'\u2565',
    'boxhU;': u'\u2568',
    'boxhd;': u'\u252c',
    'boxhu;': u'\u2534',
    'boxminus;': u'\u229f',
    'boxplus;': u'\u229e',
    'boxtimes;': u'\u22a0',
    'boxuL;': u'\u255b',
    'boxuR;': u'\u2558',
    'boxul;': u'\u2518',
    'boxur;': u'\u2514',
    'boxv;': u'\u2502',
    'boxvH;': u'\u256a',
    'boxvL;': u'\u2561',
    'boxvR;': u'\u255e',
    'boxvh;': u'\u253c',
    'boxvl;': u'\u2524',
    'boxvr;': u'\u251c',
    'bprime;': u'\u2035',
    'breve;': u'\u02d8',
    'brvbar': u'\xa6',
    'brvbar;': u'\xa6',
    'bscr;': u'\U0001d4b7',
    'bsemi;': u'\u204f',
    'bsim;': u'\u223d',
    'bsime;': u'\u22cd',
    'bsol;': u'\\',
    'bsolb;': u'\u29c5',
    'bsolhsub;': u'\u27c8',
    'bull;': u'\u2022',
    'bullet;': u'\u2022',
    'bump;': u'\u224e',
    'bumpE;': u'\u2aae',
    'bumpe;': u'\u224f',
    'bumpeq;': u'\u224f',
    'cacute;': u'\u0107',
    'cap;': u'\u2229',
    'capand;': u'\u2a44',
    'capbrcup;': u'\u2a49',
    'capcap;': u'\u2a4b',
    'capcup;': u'\u2a47',
    'capdot;': u'\u2a40',
    'caret;': u'\u2041',
    'caron;': u'\u02c7',
    'ccaps;': u'\u2a4d',
    'ccaron;': u'\u010d',
    'ccedil': u'\xe7',
    'ccedil;': u'\xe7',
    'ccirc;': u'\u0109',
    'ccups;': u'\u2a4c',
    'ccupssm;': u'\u2a50',
    'cdot;': u'\u010b',
    'cedil': u'\xb8',
    'cedil;': u'\xb8',
    'cemptyv;': u'\u29b2',
    'cent': u'\xa2',
    'cent;': u'\xa2',
    'centerdot;': u'\xb7',
    'cfr;': u'\U0001d520',
    'chcy;': u'\u0447',
    'check;': u'\u2713',
    'checkmark;': u'\u2713',
    'chi;': u'\u03c7',
    'cir;': u'\u25cb',
    'cirE;': u'\u29c3',
    'circ;': u'\u02c6',
    'circeq;': u'\u2257',
    'circlearrowleft;': u'\u21ba',
    'circlearrowright;': u'\u21bb',
    'circledR;': u'\xae',
    'circledS;': u'\u24c8',
    'circledast;': u'\u229b',
    'circledcirc;': u'\u229a',
    'circleddash;': u'\u229d',
    'cire;': u'\u2257',
    'cirfnint;': u'\u2a10',
    'cirmid;': u'\u2aef',
    'cirscir;': u'\u29c2',
    'clubs;': u'\u2663',
    'clubsuit;': u'\u2663',
    'colon;': u':',
    'colone;': u'\u2254',
    'coloneq;': u'\u2254',
    'comma;': u',',
    'commat;': u'@',
    'comp;': u'\u2201',
    'compfn;': u'\u2218',
    'complement;': u'\u2201',
    'complexes;': u'\u2102',
    'cong;': u'\u2245',
    'congdot;': u'\u2a6d',
    'conint;': u'\u222e',
    'copf;': u'\U0001d554',
    'coprod;': u'\u2210',
    'copy': u'\xa9',
    'copy;': u'\xa9',
    'copysr;': u'\u2117',
    'crarr;': u'\u21b5',
    'cross;': u'\u2717',
    'cscr;': u'\U0001d4b8',
    'csub;': u'\u2acf',
    'csube;': u'\u2ad1',
    'csup;': u'\u2ad0',
    'csupe;': u'\u2ad2',
    'ctdot;': u'\u22ef',
    'cudarrl;': u'\u2938',
    'cudarrr;': u'\u2935',
    'cuepr;': u'\u22de',
    'cuesc;': u'\u22df',
    'cularr;': u'\u21b6',
    'cularrp;': u'\u293d',
    'cup;': u'\u222a',
    'cupbrcap;': u'\u2a48',
    'cupcap;': u'\u2a46',
    'cupcup;': u'\u2a4a',
    'cupdot;': u'\u228d',
    'cupor;': u'\u2a45',
    'curarr;': u'\u21b7',
    'curarrm;': u'\u293c',
    'curlyeqprec;': u'\u22de',
    'curlyeqsucc;': u'\u22df',
    'curlyvee;': u'\u22ce',
    'curlywedge;': u'\u22cf',
    'curren': u'\xa4',
    'curren;': u'\xa4',
    'curvearrowleft;': u'\u21b6',
    'curvearrowright;': u'\u21b7',
    'cuvee;': u'\u22ce',
    'cuwed;': u'\u22cf',
    'cwconint;': u'\u2232',
    'cwint;': u'\u2231',
    'cylcty;': u'\u232d',
    'dArr;': u'\u21d3',
    'dHar;': u'\u2965',
    'dagger;': u'\u2020',
    'daleth;': u'\u2138',
    'darr;': u'\u2193',
    'dash;': u'\u2010',
    'dashv;': u'\u22a3',
    'dbkarow;': u'\u290f',
    'dblac;': u'\u02dd',
    'dcaron;': u'\u010f',
    'dcy;': u'\u0434',
    'dd;': u'\u2146',
    'ddagger;': u'\u2021',
    'ddarr;': u'\u21ca',
    'ddotseq;': u'\u2a77',
    'deg': u'\xb0',
    'deg;': u'\xb0',
    'delta;': u'\u03b4',
    'demptyv;': u'\u29b1',
    'dfisht;': u'\u297f',
    'dfr;': u'\U0001d521',
    'dharl;': u'\u21c3',
    'dharr;': u'\u21c2',
    'diam;': u'\u22c4',
    'diamond;': u'\u22c4',
    'diamondsuit;': u'\u2666',
    'diams;': u'\u2666',
    'die;': u'\xa8',
    'digamma;': u'\u03dd',
    'disin;': u'\u22f2',
    'div;': u'\xf7',
    'divide': u'\xf7',
    'divide;': u'\xf7',
    'divideontimes;': u'\u22c7',
    'divonx;': u'\u22c7',
    'djcy;': u'\u0452',
    'dlcorn;': u'\u231e',
    'dlcrop;': u'\u230d',
    'dollar;': u'$',
    'dopf;': u'\U0001d555',
    'dot;': u'\u02d9',
    'doteq;': u'\u2250',
    'doteqdot;': u'\u2251',
    'dotminus;': u'\u2238',
    'dotplus;': u'\u2214',
    'dotsquare;': u'\u22a1',
    'doublebarwedge;': u'\u2306',
    'downarrow;': u'\u2193',
    'downdownarrows;': u'\u21ca',
    'downharpoonleft;': u'\u21c3',
    'downharpoonright;': u'\u21c2',
    'drbkarow;': u'\u2910',
    'drcorn;': u'\u231f',
    'drcrop;': u'\u230c',
    'dscr;': u'\U0001d4b9',
    'dscy;': u'\u0455',
    'dsol;': u'\u29f6',
    'dstrok;': u'\u0111',
    'dtdot;': u'\u22f1',
    'dtri;': u'\u25bf',
    'dtrif;': u'\u25be',
    'duarr;': u'\u21f5',
    'duhar;': u'\u296f',
    'dwangle;': u'\u29a6',
    'dzcy;': u'\u045f',
    'dzigrarr;': u'\u27ff',
    'eDDot;': u'\u2a77',
    'eDot;': u'\u2251',
    'eacute': u'\xe9',
    'eacute;': u'\xe9',
    'easter;': u'\u2a6e',
    'ecaron;': u'\u011b',
    'ecir;': u'\u2256',
    'ecirc': u'\xea',
    'ecirc;': u'\xea',
    'ecolon;': u'\u2255',
    'ecy;': u'\u044d',
    'edot;': u'\u0117',
    'ee;': u'\u2147',
    'efDot;': u'\u2252',
    'efr;': u'\U0001d522',
    'eg;': u'\u2a9a',
    'egrave': u'\xe8',
    'egrave;': u'\xe8',
    'egs;': u'\u2a96',
    'egsdot;': u'\u2a98',
    'el;': u'\u2a99',
    'elinters;': u'\u23e7',
    'ell;': u'\u2113',
    'els;': u'\u2a95',
    'elsdot;': u'\u2a97',
    'emacr;': u'\u0113',
    'empty;': u'\u2205',
    'emptyset;': u'\u2205',
    'emptyv;': u'\u2205',
    'emsp13;': u'\u2004',
    'emsp14;': u'\u2005',
    'emsp;': u'\u2003',
    'eng;': u'\u014b',
    'ensp;': u'\u2002',
    'eogon;': u'\u0119',
    'eopf;': u'\U0001d556',
    'epar;': u'\u22d5',
    'eparsl;': u'\u29e3',
    'eplus;': u'\u2a71',
    'epsi;': u'\u03b5',
    'epsilon;': u'\u03b5',
    'epsiv;': u'\u03f5',
    'eqcirc;': u'\u2256',
    'eqcolon;': u'\u2255',
    'eqsim;': u'\u2242',
    'eqslantgtr;': u'\u2a96',
    'eqslantless;': u'\u2a95',
    'equals;': u'=',
    'equest;': u'\u225f',
    'equiv;': u'\u2261',
    'equivDD;': u'\u2a78',
    'eqvparsl;': u'\u29e5',
    'erDot;': u'\u2253',
    'erarr;': u'\u2971',
    'escr;': u'\u212f',
    'esdot;': u'\u2250',
    'esim;': u'\u2242',
    'eta;': u'\u03b7',
    'eth': u'\xf0',
    'eth;': u'\xf0',
    'euml': u'\xeb',
    'euml;': u'\xeb',
    'euro;': u'\u20ac',
    'excl;': u'!',
    'exist;': u'\u2203',
    'expectation;': u'\u2130',
    'exponentiale;': u'\u2147',
    'fallingdotseq;': u'\u2252',
    'fcy;': u'\u0444',
    'female;': u'\u2640',
    'ffilig;': u'\ufb03',
    'fflig;': u'\ufb00',
    'ffllig;': u'\ufb04',
    'ffr;': u'\U0001d523',
    'filig;': u'\ufb01',
    'flat;': u'\u266d',
    'fllig;': u'\ufb02',
    'fltns;': u'\u25b1',
    'fnof;': u'\u0192',
    'fopf;': u'\U0001d557',
    'forall;': u'\u2200',
    'fork;': u'\u22d4',
    'forkv;': u'\u2ad9',
    'fpartint;': u'\u2a0d',
    'frac12': u'\xbd',
    'frac12;': u'\xbd',
    'frac13;': u'\u2153',
    'frac14': u'\xbc',
    'frac14;': u'\xbc',
    'frac15;': u'\u2155',
    'frac16;': u'\u2159',
    'frac18;': u'\u215b',
    'frac23;': u'\u2154',
    'frac25;': u'\u2156',
    'frac34': u'\xbe',
    'frac34;': u'\xbe',
    'frac35;': u'\u2157',
    'frac38;': u'\u215c',
    'frac45;': u'\u2158',
    'frac56;': u'\u215a',
    'frac58;': u'\u215d',
    'frac78;': u'\u215e',
    'frasl;': u'\u2044',
    'frown;': u'\u2322',
    'fscr;': u'\U0001d4bb',
    'gE;': u'\u2267',
    'gEl;': u'\u2a8c',
    'gacute;': u'\u01f5',
    'gamma;': u'\u03b3',
    'gammad;': u'\u03dd',
    'gap;': u'\u2a86',
    'gbreve;': u'\u011f',
    'gcirc;': u'\u011d',
    'gcy;': u'\u0433',
    'gdot;': u'\u0121',
    'ge;': u'\u2265',
    'gel;': u'\u22db',
    'geq;': u'\u2265',
    'geqq;': u'\u2267',
    'geqslant;': u'\u2a7e',
    'ges;': u'\u2a7e',
    'gescc;': u'\u2aa9',
    'gesdot;': u'\u2a80',
    'gesdoto;': u'\u2a82',
    'gesdotol;': u'\u2a84',
    'gesles;': u'\u2a94',
    'gfr;': u'\U0001d524',
    'gg;': u'\u226b',
    'ggg;': u'\u22d9',
    'gimel;': u'\u2137',
    'gjcy;': u'\u0453',
    'gl;': u'\u2277',
    'glE;': u'\u2a92',
    'gla;': u'\u2aa5',
    'glj;': u'\u2aa4',
    'gnE;': u'\u2269',
    'gnap;': u'\u2a8a',
    'gnapprox;': u'\u2a8a',
    'gne;': u'\u2a88',
    'gneq;': u'\u2a88',
    'gneqq;': u'\u2269',
    'gnsim;': u'\u22e7',
    'gopf;': u'\U0001d558',
    'grave;': u'`',
    'gscr;': u'\u210a',
    'gsim;': u'\u2273',
    'gsime;': u'\u2a8e',
    'gsiml;': u'\u2a90',
    'gt': u'>',
    'gt;': u'>',
    'gtcc;': u'\u2aa7',
    'gtcir;': u'\u2a7a',
    'gtdot;': u'\u22d7',
    'gtlPar;': u'\u2995',
    'gtquest;': u'\u2a7c',
    'gtrapprox;': u'\u2a86',
    'gtrarr;': u'\u2978',
    'gtrdot;': u'\u22d7',
    'gtreqless;': u'\u22db',
    'gtreqqless;': u'\u2a8c',
    'gtrless;': u'\u2277',
    'gtrsim;': u'\u2273',
    'hArr;': u'\u21d4',
    'hairsp;': u'\u200a',
    'half;': u'\xbd',
    'hamilt;': u'\u210b',
    'hardcy;': u'\u044a',
    'harr;': u'\u2194',
    'harrcir;': u'\u2948',
    'harrw;': u'\u21ad',
    'hbar;': u'\u210f',
    'hcirc;': u'\u0125',
    'hearts;': u'\u2665',
    'heartsuit;': u'\u2665',
    'hellip;': u'\u2026',
    'hercon;': u'\u22b9',
    'hfr;': u'\U0001d525',
    'hksearow;': u'\u2925',
    'hkswarow;': u'\u2926',
    'hoarr;': u'\u21ff',
    'homtht;': u'\u223b',
    'hookleftarrow;': u'\u21a9',
    'hookrightarrow;': u'\u21aa',
    'hopf;': u'\U0001d559',
    'horbar;': u'\u2015',
    'hscr;': u'\U0001d4bd',
    'hslash;': u'\u210f',
    'hstrok;': u'\u0127',
    'hybull;': u'\u2043',
    'hyphen;': u'\u2010',
    'iacute': u'\xed',
    'iacute;': u'\xed',
    'ic;': u'\u2063',
    'icirc': u'\xee',
    'icirc;': u'\xee',
    'icy;': u'\u0438',
    'iecy;': u'\u0435',
    'iexcl': u'\xa1',
    'iexcl;': u'\xa1',
    'iff;': u'\u21d4',
    'ifr;': u'\U0001d526',
    'igrave': u'\xec',
    'igrave;': u'\xec',
    'ii;': u'\u2148',
    'iiiint;': u'\u2a0c',
    'iiint;': u'\u222d',
    'iinfin;': u'\u29dc',
    'iiota;': u'\u2129',
    'ijlig;': u'\u0133',
    'imacr;': u'\u012b',
    'image;': u'\u2111',
    'imagline;': u'\u2110',
    'imagpart;': u'\u2111',
    'imath;': u'\u0131',
    'imof;': u'\u22b7',
    'imped;': u'\u01b5',
    'in;': u'\u2208',
    'incare;': u'\u2105',
    'infin;': u'\u221e',
    'infintie;': u'\u29dd',
    'inodot;': u'\u0131',
    'int;': u'\u222b',
    'intcal;': u'\u22ba',
    'integers;': u'\u2124',
    'intercal;': u'\u22ba',
    'intlarhk;': u'\u2a17',
    'intprod;': u'\u2a3c',
    'iocy;': u'\u0451',
    'iogon;': u'\u012f',
    'iopf;': u'\U0001d55a',
    'iota;': u'\u03b9',
    'iprod;': u'\u2a3c',
    'iquest': u'\xbf',
    'iquest;': u'\xbf',
    'iscr;': u'\U0001d4be',
    'isin;': u'\u2208',
    'isinE;': u'\u22f9',
    'isindot;': u'\u22f5',
    'isins;': u'\u22f4',
    'isinsv;': u'\u22f3',
    'isinv;': u'\u2208',
    'it;': u'\u2062',
    'itilde;': u'\u0129',
    'iukcy;': u'\u0456',
    'iuml': u'\xef',
    'iuml;': u'\xef',
    'jcirc;': u'\u0135',
    'jcy;': u'\u0439',
    'jfr;': u'\U0001d527',
    'jmath;': u'\u0237',
    'jopf;': u'\U0001d55b',
    'jscr;': u'\U0001d4bf',
    'jsercy;': u'\u0458',
    'jukcy;': u'\u0454',
    'kappa;': u'\u03ba',
    'kappav;': u'\u03f0',
    'kcedil;': u'\u0137',
    'kcy;': u'\u043a',
    'kfr;': u'\U0001d528',
    'kgreen;': u'\u0138',
    'khcy;': u'\u0445',
    'kjcy;': u'\u045c',
    'kopf;': u'\U0001d55c',
    'kscr;': u'\U0001d4c0',
    'lAarr;': u'\u21da',
    'lArr;': u'\u21d0',
    'lAtail;': u'\u291b',
    'lBarr;': u'\u290e',
    'lE;': u'\u2266',
    'lEg;': u'\u2a8b',
    'lHar;': u'\u2962',
    'lacute;': u'\u013a',
    'laemptyv;': u'\u29b4',
    'lagran;': u'\u2112',
    'lambda;': u'\u03bb',
    'lang;': u'\u27e8',
    'langd;': u'\u2991',
    'langle;': u'\u27e8',
    'lap;': u'\u2a85',
    'laquo': u'\xab',
    'laquo;': u'\xab',
    'larr;': u'\u2190',
    'larrb;': u'\u21e4',
    'larrbfs;': u'\u291f',
    'larrfs;': u'\u291d',
    'larrhk;': u'\u21a9',
    'larrlp;': u'\u21ab',
    'larrpl;': u'\u2939',
    'larrsim;': u'\u2973',
    'larrtl;': u'\u21a2',
    'lat;': u'\u2aab',
    'latail;': u'\u2919',
    'late;': u'\u2aad',
    'lbarr;': u'\u290c',
    'lbbrk;': u'\u2772',
    'lbrace;': u'{',
    'lbrack;': u'[',
    'lbrke;': u'\u298b',
    'lbrksld;': u'\u298f',
    'lbrkslu;': u'\u298d',
    'lcaron;': u'\u013e',
    'lcedil;': u'\u013c',
    'lceil;': u'\u2308',
    'lcub;': u'{',
    'lcy;': u'\u043b',
    'ldca;': u'\u2936',
    'ldquo;': u'\u201c',
    'ldquor;': u'\u201e',
    'ldrdhar;': u'\u2967',
    'ldrushar;': u'\u294b',
    'ldsh;': u'\u21b2',
    'le;': u'\u2264',
    'leftarrow;': u'\u2190',
    'leftarrowtail;': u'\u21a2',
    'leftharpoondown;': u'\u21bd',
    'leftharpoonup;': u'\u21bc',
    'leftleftarrows;': u'\u21c7',
    'leftrightarrow;': u'\u2194',
    'leftrightarrows;': u'\u21c6',
    'leftrightharpoons;': u'\u21cb',
    'leftrightsquigarrow;': u'\u21ad',
    'leftthreetimes;': u'\u22cb',
    'leg;': u'\u22da',
    'leq;': u'\u2264',
    'leqq;': u'\u2266',
    'leqslant;': u'\u2a7d',
    'les;': u'\u2a7d',
    'lescc;': u'\u2aa8',
    'lesdot;': u'\u2a7f',
    'lesdoto;': u'\u2a81',
    'lesdotor;': u'\u2a83',
    'lesges;': u'\u2a93',
    'lessapprox;': u'\u2a85',
    'lessdot;': u'\u22d6',
    'lesseqgtr;': u'\u22da',
    'lesseqqgtr;': u'\u2a8b',
    'lessgtr;': u'\u2276',
    'lesssim;': u'\u2272',
    'lfisht;': u'\u297c',
    'lfloor;': u'\u230a',
    'lfr;': u'\U0001d529',
    'lg;': u'\u2276',
    'lgE;': u'\u2a91',
    'lhard;': u'\u21bd',
    'lharu;': u'\u21bc',
    'lharul;': u'\u296a',
    'lhblk;': u'\u2584',
    'ljcy;': u'\u0459',
    'll;': u'\u226a',
    'llarr;': u'\u21c7',
    'llcorner;': u'\u231e',
    'llhard;': u'\u296b',
    'lltri;': u'\u25fa',
    'lmidot;': u'\u0140',
    'lmoust;': u'\u23b0',
    'lmoustache;': u'\u23b0',
    'lnE;': u'\u2268',
    'lnap;': u'\u2a89',
    'lnapprox;': u'\u2a89',
    'lne;': u'\u2a87',
    'lneq;': u'\u2a87',
    'lneqq;': u'\u2268',
    'lnsim;': u'\u22e6',
    'loang;': u'\u27ec',
    'loarr;': u'\u21fd',
    'lobrk;': u'\u27e6',
    'longleftarrow;': u'\u27f5',
    'longleftrightarrow;': u'\u27f7',
    'longmapsto;': u'\u27fc',
    'longrightarrow;': u'\u27f6',
    'looparrowleft;': u'\u21ab',
    'looparrowright;': u'\u21ac',
    'lopar;': u'\u2985',
    'lopf;': u'\U0001d55d',
    'loplus;': u'\u2a2d',
    'lotimes;': u'\u2a34',
    'lowast;': u'\u2217',
    'lowbar;': u'_',
    'loz;': u'\u25ca',
    'lozenge;': u'\u25ca',
    'lozf;': u'\u29eb',
    'lpar;': u'(',
    'lparlt;': u'\u2993',
    'lrarr;': u'\u21c6',
    'lrcorner;': u'\u231f',
    'lrhar;': u'\u21cb',
    'lrhard;': u'\u296d',
    'lrm;': u'\u200e',
    'lrtri;': u'\u22bf',
    'lsaquo;': u'\u2039',
    'lscr;': u'\U0001d4c1',
    'lsh;': u'\u21b0',
    'lsim;': u'\u2272',
    'lsime;': u'\u2a8d',
    'lsimg;': u'\u2a8f',
    'lsqb;': u'[',
    'lsquo;': u'\u2018',
    'lsquor;': u'\u201a',
    'lstrok;': u'\u0142',
    'lt': u'<',
    'lt;': u'<',
    'ltcc;': u'\u2aa6',
    'ltcir;': u'\u2a79',
    'ltdot;': u'\u22d6',
    'lthree;': u'\u22cb',
    'ltimes;': u'\u22c9',
    'ltlarr;': u'\u2976',
    'ltquest;': u'\u2a7b',
    'ltrPar;': u'\u2996',
    'ltri;': u'\u25c3',
    'ltrie;': u'\u22b4',
    'ltrif;': u'\u25c2',
    'lurdshar;': u'\u294a',
    'luruhar;': u'\u2966',
    'mDDot;': u'\u223a',
    'macr': u'\xaf',
    'macr;': u'\xaf',
    'male;': u'\u2642',
    'malt;': u'\u2720',
    'maltese;': u'\u2720',
    'map;': u'\u21a6',
    'mapsto;': u'\u21a6',
    'mapstodown;': u'\u21a7',
    'mapstoleft;': u'\u21a4',
    'mapstoup;': u'\u21a5',
    'marker;': u'\u25ae',
    'mcomma;': u'\u2a29',
    'mcy;': u'\u043c',
    'mdash;': u'\u2014',
    'measuredangle;': u'\u2221',
    'mfr;': u'\U0001d52a',
    'mho;': u'\u2127',
    'micro': u'\xb5',
    'micro;': u'\xb5',
    'mid;': u'\u2223',
    'midast;': u'*',
    'midcir;': u'\u2af0',
    'middot': u'\xb7',
    'middot;': u'\xb7',
    'minus;': u'\u2212',
    'minusb;': u'\u229f',
    'minusd;': u'\u2238',
    'minusdu;': u'\u2a2a',
    'mlcp;': u'\u2adb',
    'mldr;': u'\u2026',
    'mnplus;': u'\u2213',
    'models;': u'\u22a7',
    'mopf;': u'\U0001d55e',
    'mp;': u'\u2213',
    'mscr;': u'\U0001d4c2',
    'mstpos;': u'\u223e',
    'mu;': u'\u03bc',
    'multimap;': u'\u22b8',
    'mumap;': u'\u22b8',
    'nLeftarrow;': u'\u21cd',
    'nLeftrightarrow;': u'\u21ce',
    'nRightarrow;': u'\u21cf',
    'nVDash;': u'\u22af',
    'nVdash;': u'\u22ae',
    'nabla;': u'\u2207',
    'nacute;': u'\u0144',
    'nap;': u'\u2249',
    'napos;': u'\u0149',
    'napprox;': u'\u2249',
    'natur;': u'\u266e',
    'natural;': u'\u266e',
    'naturals;': u'\u2115',
    'nbsp': u'\xa0',
    'nbsp;': u'\xa0',
    'ncap;': u'\u2a43',
    'ncaron;': u'\u0148',
    'ncedil;': u'\u0146',
    'ncong;': u'\u2247',
    'ncup;': u'\u2a42',
    'ncy;': u'\u043d',
    'ndash;': u'\u2013',
    'ne;': u'\u2260',
    'neArr;': u'\u21d7',
    'nearhk;': u'\u2924',
    'nearr;': u'\u2197',
    'nearrow;': u'\u2197',
    'nequiv;': u'\u2262',
    'nesear;': u'\u2928',
    'nexist;': u'\u2204',
    'nexists;': u'\u2204',
    'nfr;': u'\U0001d52b',
    'nge;': u'\u2271',
    'ngeq;': u'\u2271',
    'ngsim;': u'\u2275',
    'ngt;': u'\u226f',
    'ngtr;': u'\u226f',
    'nhArr;': u'\u21ce',
    'nharr;': u'\u21ae',
    'nhpar;': u'\u2af2',
    'ni;': u'\u220b',
    'nis;': u'\u22fc',
    'nisd;': u'\u22fa',
    'niv;': u'\u220b',
    'njcy;': u'\u045a',
    'nlArr;': u'\u21cd',
    'nlarr;': u'\u219a',
    'nldr;': u'\u2025',
    'nle;': u'\u2270',
    'nleftarrow;': u'\u219a',
    'nleftrightarrow;': u'\u21ae',
    'nleq;': u'\u2270',
    'nless;': u'\u226e',
    'nlsim;': u'\u2274',
    'nlt;': u'\u226e',
    'nltri;': u'\u22ea',
    'nltrie;': u'\u22ec',
    'nmid;': u'\u2224',
    'nopf;': u'\U0001d55f',
    'not': u'\xac',
    'not;': u'\xac',
    'notin;': u'\u2209',
    'notinva;': u'\u2209',
    'notinvb;': u'\u22f7',
    'notinvc;': u'\u22f6',
    'notni;': u'\u220c',
    'notniva;': u'\u220c',
    'notnivb;': u'\u22fe',
    'notnivc;': u'\u22fd',
    'npar;': u'\u2226',
    'nparallel;': u'\u2226',
    'npolint;': u'\u2a14',
    'npr;': u'\u2280',
    'nprcue;': u'\u22e0',
    'nprec;': u'\u2280',
    'nrArr;': u'\u21cf',
    'nrarr;': u'\u219b',
    'nrightarrow;': u'\u219b',
    'nrtri;': u'\u22eb',
    'nrtrie;': u'\u22ed',
    'nsc;': u'\u2281',
    'nsccue;': u'\u22e1',
    'nscr;': u'\U0001d4c3',
    'nshortmid;': u'\u2224',
    'nshortparallel;': u'\u2226',
    'nsim;': u'\u2241',
    'nsime;': u'\u2244',
    'nsimeq;': u'\u2244',
    'nsmid;': u'\u2224',
    'nspar;': u'\u2226',
    'nsqsube;': u'\u22e2',
    'nsqsupe;': u'\u22e3',
    'nsub;': u'\u2284',
    'nsube;': u'\u2288',
    'nsubseteq;': u'\u2288',
    'nsucc;': u'\u2281',
    'nsup;': u'\u2285',
    'nsupe;': u'\u2289',
    'nsupseteq;': u'\u2289',
    'ntgl;': u'\u2279',
    'ntilde': u'\xf1',
    'ntilde;': u'\xf1',
    'ntlg;': u'\u2278',
    'ntriangleleft;': u'\u22ea',
    'ntrianglelefteq;': u'\u22ec',
    'ntriangleright;': u'\u22eb',
    'ntrianglerighteq;': u'\u22ed',
    'nu;': u'\u03bd',
    'num;': u'#',
    'numero;': u'\u2116',
    'numsp;': u'\u2007',
    'nvDash;': u'\u22ad',
    'nvHarr;': u'\u2904',
    'nvdash;': u'\u22ac',
    'nvinfin;': u'\u29de',
    'nvlArr;': u'\u2902',
    'nvrArr;': u'\u2903',
    'nwArr;': u'\u21d6',
    'nwarhk;': u'\u2923',
    'nwarr;': u'\u2196',
    'nwarrow;': u'\u2196',
    'nwnear;': u'\u2927',
    'oS;': u'\u24c8',
    'oacute': u'\xf3',
    'oacute;': u'\xf3',
    'oast;': u'\u229b',
    'ocir;': u'\u229a',
    'ocirc': u'\xf4',
    'ocirc;': u'\xf4',
    'ocy;': u'\u043e',
    'odash;': u'\u229d',
    'odblac;': u'\u0151',
    'odiv;': u'\u2a38',
    'odot;': u'\u2299',
    'odsold;': u'\u29bc',
    'oelig;': u'\u0153',
    'ofcir;': u'\u29bf',
    'ofr;': u'\U0001d52c',
    'ogon;': u'\u02db',
    'ograve': u'\xf2',
    'ograve;': u'\xf2',
    'ogt;': u'\u29c1',
    'ohbar;': u'\u29b5',
    'ohm;': u'\u03a9',
    'oint;': u'\u222e',
    'olarr;': u'\u21ba',
    'olcir;': u'\u29be',
    'olcross;': u'\u29bb',
    'oline;': u'\u203e',
    'olt;': u'\u29c0',
    'omacr;': u'\u014d',
    'omega;': u'\u03c9',
    'omicron;': u'\u03bf',
    'omid;': u'\u29b6',
    'ominus;': u'\u2296',
    'oopf;': u'\U0001d560',
    'opar;': u'\u29b7',
    'operp;': u'\u29b9',
    'oplus;': u'\u2295',
    'or;': u'\u2228',
    'orarr;': u'\u21bb',
    'ord;': u'\u2a5d',
    'order;': u'\u2134',
    'orderof;': u'\u2134',
    'ordf': u'\xaa',
    'ordf;': u'\xaa',
    'ordm': u'\xba',
    'ordm;': u'\xba',
    'origof;': u'\u22b6',
    'oror;': u'\u2a56',
    'orslope;': u'\u2a57',
    'orv;': u'\u2a5b',
    'oscr;': u'\u2134',
    'oslash': u'\xf8',
    'oslash;': u'\xf8',
    'osol;': u'\u2298',
    'otilde': u'\xf5',
    'otilde;': u'\xf5',
    'otimes;': u'\u2297',
    'otimesas;': u'\u2a36',
    'ouml': u'\xf6',
    'ouml;': u'\xf6',
    'ovbar;': u'\u233d',
    'par;': u'\u2225',
    'para': u'\xb6',
    'para;': u'\xb6',
    'parallel;': u'\u2225',
    'parsim;': u'\u2af3',
    'parsl;': u'\u2afd',
    'part;': u'\u2202',
    'pcy;': u'\u043f',
    'percnt;': u'%',
    'period;': u'.',
    'permil;': u'\u2030',
    'perp;': u'\u22a5',
    'pertenk;': u'\u2031',
    'pfr;': u'\U0001d52d',
    'phi;': u'\u03c6',
    'phiv;': u'\u03d5',
    'phmmat;': u'\u2133',
    'phone;': u'\u260e',
    'pi;': u'\u03c0',
    'pitchfork;': u'\u22d4',
    'piv;': u'\u03d6',
    'planck;': u'\u210f',
    'planckh;': u'\u210e',
    'plankv;': u'\u210f',
    'plus;': u'+',
    'plusacir;': u'\u2a23',
    'plusb;': u'\u229e',
    'pluscir;': u'\u2a22',
    'plusdo;': u'\u2214',
    'plusdu;': u'\u2a25',
    'pluse;': u'\u2a72',
    'plusmn': u'\xb1',
    'plusmn;': u'\xb1',
    'plussim;': u'\u2a26',
    'plustwo;': u'\u2a27',
    'pm;': u'\xb1',
    'pointint;': u'\u2a15',
    'popf;': u'\U0001d561',
    'pound': u'\xa3',
    'pound;': u'\xa3',
    'pr;': u'\u227a',
    'prE;': u'\u2ab3',
    'prap;': u'\u2ab7',
    'prcue;': u'\u227c',
    'pre;': u'\u2aaf',
    'prec;': u'\u227a',
    'precapprox;': u'\u2ab7',
    'preccurlyeq;': u'\u227c',
    'preceq;': u'\u2aaf',
    'precnapprox;': u'\u2ab9',
    'precneqq;': u'\u2ab5',
    'precnsim;': u'\u22e8',
    'precsim;': u'\u227e',
    'prime;': u'\u2032',
    'primes;': u'\u2119',
    'prnE;': u'\u2ab5',
    'prnap;': u'\u2ab9',
    'prnsim;': u'\u22e8',
    'prod;': u'\u220f',
    'profalar;': u'\u232e',
    'profline;': u'\u2312',
    'profsurf;': u'\u2313',
    'prop;': u'\u221d',
    'propto;': u'\u221d',
    'prsim;': u'\u227e',
    'prurel;': u'\u22b0',
    'pscr;': u'\U0001d4c5',
    'psi;': u'\u03c8',
    'puncsp;': u'\u2008',
    'qfr;': u'\U0001d52e',
    'qint;': u'\u2a0c',
    'qopf;': u'\U0001d562',
    'qprime;': u'\u2057',
    'qscr;': u'\U0001d4c6',
    'quaternions;': u'\u210d',
    'quatint;': u'\u2a16',
    'quest;': u'?',
    'questeq;': u'\u225f',
    'quot': u'"',
    'quot;': u'"',
    'rAarr;': u'\u21db',
    'rArr;': u'\u21d2',
    'rAtail;': u'\u291c',
    'rBarr;': u'\u290f',
    'rHar;': u'\u2964',
    'racute;': u'\u0155',
    'radic;': u'\u221a',
    'raemptyv;': u'\u29b3',
    'rang;': u'\u27e9',
    'rangd;': u'\u2992',
    'range;': u'\u29a5',
    'rangle;': u'\u27e9',
    'raquo': u'\xbb',
    'raquo;': u'\xbb',
    'rarr;': u'\u2192',
    'rarrap;': u'\u2975',
    'rarrb;': u'\u21e5',
    'rarrbfs;': u'\u2920',
    'rarrc;': u'\u2933',
    'rarrfs;': u'\u291e',
    'rarrhk;': u'\u21aa',
    'rarrlp;': u'\u21ac',
    'rarrpl;': u'\u2945',
    'rarrsim;': u'\u2974',
    'rarrtl;': u'\u21a3',
    'rarrw;': u'\u219d',
    'ratail;': u'\u291a',
    'ratio;': u'\u2236',
    'rationals;': u'\u211a',
    'rbarr;': u'\u290d',
    'rbbrk;': u'\u2773',
    'rbrace;': u'}',
    'rbrack;': u']',
    'rbrke;': u'\u298c',
    'rbrksld;': u'\u298e',
    'rbrkslu;': u'\u2990',
    'rcaron;': u'\u0159',
    'rcedil;': u'\u0157',
    'rceil;': u'\u2309',
    'rcub;': u'}',
    'rcy;': u'\u0440',
    'rdca;': u'\u2937',
    'rdldhar;': u'\u2969',
    'rdquo;': u'\u201d',
    'rdquor;': u'\u201d',
    'rdsh;': u'\u21b3',
    'real;': u'\u211c',
    'realine;': u'\u211b',
    'realpart;': u'\u211c',
    'reals;': u'\u211d',
    'rect;': u'\u25ad',
    'reg': u'\xae',
    'reg;': u'\xae',
    'rfisht;': u'\u297d',
    'rfloor;': u'\u230b',
    'rfr;': u'\U0001d52f',
    'rhard;': u'\u21c1',
    'rharu;': u'\u21c0',
    'rharul;': u'\u296c',
    'rho;': u'\u03c1',
    'rhov;': u'\u03f1',
    'rightarrow;': u'\u2192',
    'rightarrowtail;': u'\u21a3',
    'rightharpoondown;': u'\u21c1',
    'rightharpoonup;': u'\u21c0',
    'rightleftarrows;': u'\u21c4',
    'rightleftharpoons;': u'\u21cc',
    'rightrightarrows;': u'\u21c9',
    'rightsquigarrow;': u'\u219d',
    'rightthreetimes;': u'\u22cc',
    'ring;': u'\u02da',
    'risingdotseq;': u'\u2253',
    'rlarr;': u'\u21c4',
    'rlhar;': u'\u21cc',
    'rlm;': u'\u200f',
    'rmoust;': u'\u23b1',
    'rmoustache;': u'\u23b1',
    'rnmid;': u'\u2aee',
    'roang;': u'\u27ed',
    'roarr;': u'\u21fe',
    'robrk;': u'\u27e7',
    'ropar;': u'\u2986',
    'ropf;': u'\U0001d563',
    'roplus;': u'\u2a2e',
    'rotimes;': u'\u2a35',
    'rpar;': u')',
    'rpargt;': u'\u2994',
    'rppolint;': u'\u2a12',
    'rrarr;': u'\u21c9',
    'rsaquo;': u'\u203a',
    'rscr;': u'\U0001d4c7',
    'rsh;': u'\u21b1',
    'rsqb;': u']',
    'rsquo;': u'\u2019',
    'rsquor;': u'\u2019',
    'rthree;': u'\u22cc',
    'rtimes;': u'\u22ca',
    'rtri;': u'\u25b9',
    'rtrie;': u'\u22b5',
    'rtrif;': u'\u25b8',
    'rtriltri;': u'\u29ce',
    'ruluhar;': u'\u2968',
    'rx;': u'\u211e',
    'sacute;': u'\u015b',
    'sbquo;': u'\u201a',
    'sc;': u'\u227b',
    'scE;': u'\u2ab4',
    'scap;': u'\u2ab8',
    'scaron;': u'\u0161',
    'sccue;': u'\u227d',
    'sce;': u'\u2ab0',
    'scedil;': u'\u015f',
    'scirc;': u'\u015d',
    'scnE;': u'\u2ab6',
    'scnap;': u'\u2aba',
    'scnsim;': u'\u22e9',
    'scpolint;': u'\u2a13',
    'scsim;': u'\u227f',
    'scy;': u'\u0441',
    'sdot;': u'\u22c5',
    'sdotb;': u'\u22a1',
    'sdote;': u'\u2a66',
    'seArr;': u'\u21d8',
    'searhk;': u'\u2925',
    'searr;': u'\u2198',
    'searrow;': u'\u2198',
    'sect': u'\xa7',
    'sect;': u'\xa7',
    'semi;': u';',
    'seswar;': u'\u2929',
    'setminus;': u'\u2216',
    'setmn;': u'\u2216',
    'sext;': u'\u2736',
    'sfr;': u'\U0001d530',
    'sfrown;': u'\u2322',
    'sharp;': u'\u266f',
    'shchcy;': u'\u0449',
    'shcy;': u'\u0448',
    'shortmid;': u'\u2223',
    'shortparallel;': u'\u2225',
    'shy': u'\xad',
    'shy;': u'\xad',
    'sigma;': u'\u03c3',
    'sigmaf;': u'\u03c2',
    'sigmav;': u'\u03c2',
    'sim;': u'\u223c',
    'simdot;': u'\u2a6a',
    'sime;': u'\u2243',
    'simeq;': u'\u2243',
    'simg;': u'\u2a9e',
    'simgE;': u'\u2aa0',
    'siml;': u'\u2a9d',
    'simlE;': u'\u2a9f',
    'simne;': u'\u2246',
    'simplus;': u'\u2a24',
    'simrarr;': u'\u2972',
    'slarr;': u'\u2190',
    'smallsetminus;': u'\u2216',
    'smashp;': u'\u2a33',
    'smeparsl;': u'\u29e4',
    'smid;': u'\u2223',
    'smile;': u'\u2323',
    'smt;': u'\u2aaa',
    'smte;': u'\u2aac',
    'softcy;': u'\u044c',
    'sol;': u'/',
    'solb;': u'\u29c4',
    'solbar;': u'\u233f',
    'sopf;': u'\U0001d564',
    'spades;': u'\u2660',
    'spadesuit;': u'\u2660',
    'spar;': u'\u2225',
    'sqcap;': u'\u2293',
    'sqcup;': u'\u2294',
    'sqsub;': u'\u228f',
    'sqsube;': u'\u2291',
    'sqsubset;': u'\u228f',
    'sqsubseteq;': u'\u2291',
    'sqsup;': u'\u2290',
    'sqsupe;': u'\u2292',
    'sqsupset;': u'\u2290',
    'sqsupseteq;': u'\u2292',
    'squ;': u'\u25a1',
    'square;': u'\u25a1',
    'squarf;': u'\u25aa',
    'squf;': u'\u25aa',
    'srarr;': u'\u2192',
    'sscr;': u'\U0001d4c8',
    'ssetmn;': u'\u2216',
    'ssmile;': u'\u2323',
    'sstarf;': u'\u22c6',
    'star;': u'\u2606',
    'starf;': u'\u2605',
    'straightepsilon;': u'\u03f5',
    'straightphi;': u'\u03d5',
    'strns;': u'\xaf',
    'sub;': u'\u2282',
    'subE;': u'\u2ac5',
    'subdot;': u'\u2abd',
    'sube;': u'\u2286',
    'subedot;': u'\u2ac3',
    'submult;': u'\u2ac1',
    'subnE;': u'\u2acb',
    'subne;': u'\u228a',
    'subplus;': u'\u2abf',
    'subrarr;': u'\u2979',
    'subset;': u'\u2282',
    'subseteq;': u'\u2286',
    'subseteqq;': u'\u2ac5',
    'subsetneq;': u'\u228a',
    'subsetneqq;': u'\u2acb',
    'subsim;': u'\u2ac7',
    'subsub;': u'\u2ad5',
    'subsup;': u'\u2ad3',
    'succ;': u'\u227b',
    'succapprox;': u'\u2ab8',
    'succcurlyeq;': u'\u227d',
    'succeq;': u'\u2ab0',
    'succnapprox;': u'\u2aba',
    'succneqq;': u'\u2ab6',
    'succnsim;': u'\u22e9',
    'succsim;': u'\u227f',
    'sum;': u'\u2211',
    'sung;': u'\u266a',
    'sup1': u'\xb9',
    'sup1;': u'\xb9',
    'sup2': u'\xb2',
    'sup2;': u'\xb2',
    'sup3': u'\xb3',
    'sup3;': u'\xb3',
    'sup;': u'\u2283',
    'supE;': u'\u2ac6',
    'supdot;': u'\u2abe',
    'supdsub;': u'\u2ad8',
    'supe;': u'\u2287',
    'supedot;': u'\u2ac4',
    'suphsol;': u'\u27c9',
    'suphsub;': u'\u2ad7',
    'suplarr;': u'\u297b',
    'supmult;': u'\u2ac2',
    'supnE;': u'\u2acc',
    'supne;': u'\u228b',
    'supplus;': u'\u2ac0',
    'supset;': u'\u2283',
    'supseteq;': u'\u2287',
    'supseteqq;': u'\u2ac6',
    'supsetneq;': u'\u228b',
    'supsetneqq;': u'\u2acc',
    'supsim;': u'\u2ac8',
    'supsub;': u'\u2ad4',
    'supsup;': u'\u2ad6',
    'swArr;': u'\u21d9',
    'swarhk;': u'\u2926',
    'swarr;': u'\u2199',
    'swarrow;': u'\u2199',
    'swnwar;': u'\u292a',
    'szlig': u'\xdf',
    'szlig;': u'\xdf',
    'target;': u'\u2316',
    'tau;': u'\u03c4',
    'tbrk;': u'\u23b4',
    'tcaron;': u'\u0165',
    'tcedil;': u'\u0163',
    'tcy;': u'\u0442',
    'tdot;': u'\u20db',
    'telrec;': u'\u2315',
    'tfr;': u'\U0001d531',
    'there4;': u'\u2234',
    'therefore;': u'\u2234',
    'theta;': u'\u03b8',
    'thetasym;': u'\u03d1',
    'thetav;': u'\u03d1',
    'thickapprox;': u'\u2248',
    'thicksim;': u'\u223c',
    'thinsp;': u'\u2009',
    'thkap;': u'\u2248',
    'thksim;': u'\u223c',
    'thorn': u'\xfe',
    'thorn;': u'\xfe',
    'tilde;': u'\u02dc',
    'times': u'\xd7',
    'times;': u'\xd7',
    'timesb;': u'\u22a0',
    'timesbar;': u'\u2a31',
    'timesd;': u'\u2a30',
    'tint;': u'\u222d',
    'toea;': u'\u2928',
    'top;': u'\u22a4',
    'topbot;': u'\u2336',
    'topcir;': u'\u2af1',
    'topf;': u'\U0001d565',
    'topfork;': u'\u2ada',
    'tosa;': u'\u2929',
    'tprime;': u'\u2034',
    'trade;': u'\u2122',
    'triangle;': u'\u25b5',
    'triangledown;': u'\u25bf',
    'triangleleft;': u'\u25c3',
    'trianglelefteq;': u'\u22b4',
    'triangleq;': u'\u225c',
    'triangleright;': u'\u25b9',
    'trianglerighteq;': u'\u22b5',
    'tridot;': u'\u25ec',
    'trie;': u'\u225c',
    'triminus;': u'\u2a3a',
    'triplus;': u'\u2a39',
    'trisb;': u'\u29cd',
    'tritime;': u'\u2a3b',
    'trpezium;': u'\u23e2',
    'tscr;': u'\U0001d4c9',
    'tscy;': u'\u0446',
    'tshcy;': u'\u045b',
    'tstrok;': u'\u0167',
    'twixt;': u'\u226c',
    'twoheadleftarrow;': u'\u219e',
    'twoheadrightarrow;': u'\u21a0',
    'uArr;': u'\u21d1',
    'uHar;': u'\u2963',
    'uacute': u'\xfa',
    'uacute;': u'\xfa',
    'uarr;': u'\u2191',
    'ubrcy;': u'\u045e',
    'ubreve;': u'\u016d',
    'ucirc': u'\xfb',
    'ucirc;': u'\xfb',
    'ucy;': u'\u0443',
    'udarr;': u'\u21c5',
    'udblac;': u'\u0171',
    'udhar;': u'\u296e',
    'ufisht;': u'\u297e',
    'ufr;': u'\U0001d532',
    'ugrave': u'\xf9',
    'ugrave;': u'\xf9',
    'uharl;': u'\u21bf',
    'uharr;': u'\u21be',
    'uhblk;': u'\u2580',
    'ulcorn;': u'\u231c',
    'ulcorner;': u'\u231c',
    'ulcrop;': u'\u230f',
    'ultri;': u'\u25f8',
    'umacr;': u'\u016b',
    'uml': u'\xa8',
    'uml;': u'\xa8',
    'uogon;': u'\u0173',
    'uopf;': u'\U0001d566',
    'uparrow;': u'\u2191',
    'updownarrow;': u'\u2195',
    'upharpoonleft;': u'\u21bf',
    'upharpoonright;': u'\u21be',
    'uplus;': u'\u228e',
    'upsi;': u'\u03c5',
    'upsih;': u'\u03d2',
    'upsilon;': u'\u03c5',
    'upuparrows;': u'\u21c8',
    'urcorn;': u'\u231d',
    'urcorner;': u'\u231d',
    'urcrop;': u'\u230e',
    'uring;': u'\u016f',
    'urtri;': u'\u25f9',
    'uscr;': u'\U0001d4ca',
    'utdot;': u'\u22f0',
    'utilde;': u'\u0169',
    'utri;': u'\u25b5',
    'utrif;': u'\u25b4',
    'uuarr;': u'\u21c8',
    'uuml': u'\xfc',
    'uuml;': u'\xfc',
    'uwangle;': u'\u29a7',
    'vArr;': u'\u21d5',
    'vBar;': u'\u2ae8',
    'vBarv;': u'\u2ae9',
    'vDash;': u'\u22a8',
    'vangrt;': u'\u299c',
    'varepsilon;': u'\u03f5',
    'varkappa;': u'\u03f0',
    'varnothing;': u'\u2205',
    'varphi;': u'\u03d5',
    'varpi;': u'\u03d6',
    'varpropto;': u'\u221d',
    'varr;': u'\u2195',
    'varrho;': u'\u03f1',
    'varsigma;': u'\u03c2',
    'vartheta;': u'\u03d1',
    'vartriangleleft;': u'\u22b2',
    'vartriangleright;': u'\u22b3',
    'vcy;': u'\u0432',
    'vdash;': u'\u22a2',
    'vee;': u'\u2228',
    'veebar;': u'\u22bb',
    'veeeq;': u'\u225a',
    'vellip;': u'\u22ee',
    'verbar;': u'|',
    'vert;': u'|',
    'vfr;': u'\U0001d533',
    'vltri;': u'\u22b2',
    'vopf;': u'\U0001d567',
    'vprop;': u'\u221d',
    'vrtri;': u'\u22b3',
    'vscr;': u'\U0001d4cb',
    'vzigzag;': u'\u299a',
    'wcirc;': u'\u0175',
    'wedbar;': u'\u2a5f',
    'wedge;': u'\u2227',
    'wedgeq;': u'\u2259',
    'weierp;': u'\u2118',
    'wfr;': u'\U0001d534',
    'wopf;': u'\U0001d568',
    'wp;': u'\u2118',
    'wr;': u'\u2240',
    'wreath;': u'\u2240',
    'wscr;': u'\U0001d4cc',
    'xcap;': u'\u22c2',
    'xcirc;': u'\u25ef',
    'xcup;': u'\u22c3',
    'xdtri;': u'\u25bd',
    'xfr;': u'\U0001d535',
    'xhArr;': u'\u27fa',
    'xharr;': u'\u27f7',
    'xi;': u'\u03be',
    'xlArr;': u'\u27f8',
    'xlarr;': u'\u27f5',
    'xmap;': u'\u27fc',
    'xnis;': u'\u22fb',
    'xodot;': u'\u2a00',
    'xopf;': u'\U0001d569',
    'xoplus;': u'\u2a01',
    'xotime;': u'\u2a02',
    'xrArr;': u'\u27f9',
    'xrarr;': u'\u27f6',
    'xscr;': u'\U0001d4cd',
    'xsqcup;': u'\u2a06',
    'xuplus;': u'\u2a04',
    'xutri;': u'\u25b3',
    'xvee;': u'\u22c1',
    'xwedge;': u'\u22c0',
    'yacute': u'\xfd',
    'yacute;': u'\xfd',
    'yacy;': u'\u044f',
    'ycirc;': u'\u0177',
    'ycy;': u'\u044b',
    'yen': u'\xa5',
    'yen;': u'\xa5',
    'yfr;': u'\U0001d536',
    'yicy;': u'\u0457',
    'yopf;': u'\U0001d56a',
    'yscr;': u'\U0001d4ce',
    'yucy;': u'\u044e',
    'yuml': u'\xff',
    'yuml;': u'\xff',
    'zacute;': u'\u017a',
    'zcaron;': u'\u017e',
    'zcy;': u'\u0437',
    'zdot;': u'\u017c',
    'zeetrf;': u'\u2128',
    'zeta;': u'\u03b6',
    'zfr;': u'\U0001d537',
    'zhcy;': u'\u0436',
    'zigrarr;': u'\u21dd',
    'zopf;': u'\U0001d56b',
    'zscr;': u'\U0001d4cf',
    'zwj;': u'\u200d',
    'zwnj;': u'\u200c',
}

replacementCharacters = {
    0x0:u"\uFFFD",
    0x0d:u"\u000D",
    0x80:u"\u20AC",
    0x81:u"\u0081",
    0x81:u"\u0081",
    0x82:u"\u201A",
    0x83:u"\u0192",
    0x84:u"\u201E",
    0x85:u"\u2026",
    0x86:u"\u2020",
    0x87:u"\u2021",
    0x88:u"\u02C6",
    0x89:u"\u2030",
    0x8A:u"\u0160",
    0x8B:u"\u2039",
    0x8C:u"\u0152",
    0x8D:u"\u008D",
    0x8E:u"\u017D",
    0x8F:u"\u008F",
    0x90:u"\u0090",
    0x91:u"\u2018",
    0x92:u"\u2019",
    0x93:u"\u201C",
    0x94:u"\u201D",
    0x95:u"\u2022",
    0x96:u"\u2013",
    0x97:u"\u2014",
    0x98:u"\u02DC",
    0x99:u"\u2122",
    0x9A:u"\u0161",
    0x9B:u"\u203A",
    0x9C:u"\u0153",
    0x9D:u"\u009D",
    0x9E:u"\u017E",
    0x9F:u"\u0178",
}

encodings = {
    '437': 'cp437',
    '850': 'cp850',
    '852': 'cp852',
    '855': 'cp855',
    '857': 'cp857',
    '860': 'cp860',
    '861': 'cp861',
    '862': 'cp862',
    '863': 'cp863',
    '865': 'cp865',
    '866': 'cp866',
    '869': 'cp869',
    'ansix341968': 'ascii',
    'ansix341986': 'ascii',
    'arabic': 'iso8859-6',
    'ascii': 'ascii',
    'asmo708': 'iso8859-6',
    'big5': 'big5',
    'big5hkscs': 'big5hkscs',
    'chinese': 'gbk',
    'cp037': 'cp037',
    'cp1026': 'cp1026',
    'cp154': 'ptcp154',
    'cp367': 'ascii',
    'cp424': 'cp424',
    'cp437': 'cp437',
    'cp500': 'cp500',
    'cp775': 'cp775',
    'cp819': 'windows-1252',
    'cp850': 'cp850',
    'cp852': 'cp852',
    'cp855': 'cp855',
    'cp857': 'cp857',
    'cp860': 'cp860',
    'cp861': 'cp861',
    'cp862': 'cp862',
    'cp863': 'cp863',
    'cp864': 'cp864',
    'cp865': 'cp865',
    'cp866': 'cp866',
    'cp869': 'cp869',
    'cp936': 'gbk',
    'cpgr': 'cp869',
    'cpis': 'cp861',
    'csascii': 'ascii',
    'csbig5': 'big5',
    'cseuckr': 'cp949',
    'cseucpkdfmtjapanese': 'euc_jp',
    'csgb2312': 'gbk',
    'cshproman8': 'hp-roman8',
    'csibm037': 'cp037',
    'csibm1026': 'cp1026',
    'csibm424': 'cp424',
    'csibm500': 'cp500',
    'csibm855': 'cp855',
    'csibm857': 'cp857',
    'csibm860': 'cp860',
    'csibm861': 'cp861',
    'csibm863': 'cp863',
    'csibm864': 'cp864',
    'csibm865': 'cp865',
    'csibm866': 'cp866',
    'csibm869': 'cp869',
    'csiso2022jp': 'iso2022_jp',
    'csiso2022jp2': 'iso2022_jp_2',
    'csiso2022kr': 'iso2022_kr',
    'csiso58gb231280': 'gbk',
    'csisolatin1': 'windows-1252',
    'csisolatin2': 'iso8859-2',
    'csisolatin3': 'iso8859-3',
    'csisolatin4': 'iso8859-4',
    'csisolatin5': 'windows-1254',
    'csisolatin6': 'iso8859-10',
    'csisolatinarabic': 'iso8859-6',
    'csisolatincyrillic': 'iso8859-5',
    'csisolatingreek': 'iso8859-7',
    'csisolatinhebrew': 'iso8859-8',
    'cskoi8r': 'koi8-r',
    'csksc56011987': 'cp949',
    'cspc775baltic': 'cp775',
    'cspc850multilingual': 'cp850',
    'cspc862latinhebrew': 'cp862',
    'cspc8codepage437': 'cp437',
    'cspcp852': 'cp852',
    'csptcp154': 'ptcp154',
    'csshiftjis': 'shift_jis',
    'csunicode11utf7': 'utf-7',
    'cyrillic': 'iso8859-5',
    'cyrillicasian': 'ptcp154',
    'ebcdiccpbe': 'cp500',
    'ebcdiccpca': 'cp037',
    'ebcdiccpch': 'cp500',
    'ebcdiccphe': 'cp424',
    'ebcdiccpnl': 'cp037',
    'ebcdiccpus': 'cp037',
    'ebcdiccpwt': 'cp037',
    'ecma114': 'iso8859-6',
    'ecma118': 'iso8859-7',
    'elot928': 'iso8859-7',
    'eucjp': 'euc_jp',
    'euckr': 'cp949',
    'extendedunixcodepackedformatforjapanese': 'euc_jp',
    'gb18030': 'gb18030',
    'gb2312': 'gbk',
    'gb231280': 'gbk',
    'gbk': 'gbk',
    'greek': 'iso8859-7',
    'greek8': 'iso8859-7',
    'hebrew': 'iso8859-8',
    'hproman8': 'hp-roman8',
    'hzgb2312': 'hz',
    'ibm037': 'cp037',
    'ibm1026': 'cp1026',
    'ibm367': 'ascii',
    'ibm424': 'cp424',
    'ibm437': 'cp437',
    'ibm500': 'cp500',
    'ibm775': 'cp775',
    'ibm819': 'windows-1252',
    'ibm850': 'cp850',
    'ibm852': 'cp852',
    'ibm855': 'cp855',
    'ibm857': 'cp857',
    'ibm860': 'cp860',
    'ibm861': 'cp861',
    'ibm862': 'cp862',
    'ibm863': 'cp863',
    'ibm864': 'cp864',
    'ibm865': 'cp865',
    'ibm866': 'cp866',
    'ibm869': 'cp869',
    'iso2022jp': 'iso2022_jp',
    'iso2022jp2': 'iso2022_jp_2',
    'iso2022kr': 'iso2022_kr',
    'iso646irv1991': 'ascii',
    'iso646us': 'ascii',
    'iso88591': 'windows-1252',
    'iso885910': 'iso8859-10',
    'iso8859101992': 'iso8859-10',
    'iso885911987': 'windows-1252',
    'iso885913': 'iso8859-13',
    'iso885914': 'iso8859-14',
    'iso8859141998': 'iso8859-14',
    'iso885915': 'iso8859-15',
    'iso885916': 'iso8859-16',
    'iso8859162001': 'iso8859-16',
    'iso88592': 'iso8859-2',
    'iso885921987': 'iso8859-2',
    'iso88593': 'iso8859-3',
    'iso885931988': 'iso8859-3',
    'iso88594': 'iso8859-4',
    'iso885941988': 'iso8859-4',
    'iso88595': 'iso8859-5',
    'iso885951988': 'iso8859-5',
    'iso88596': 'iso8859-6',
    'iso885961987': 'iso8859-6',
    'iso88597': 'iso8859-7',
    'iso885971987': 'iso8859-7',
    'iso88598': 'iso8859-8',
    'iso885981988': 'iso8859-8',
    'iso88599': 'windows-1254',
    'iso885991989': 'windows-1254',
    'isoceltic': 'iso8859-14',
    'isoir100': 'windows-1252',
    'isoir101': 'iso8859-2',
    'isoir109': 'iso8859-3',
    'isoir110': 'iso8859-4',
    'isoir126': 'iso8859-7',
    'isoir127': 'iso8859-6',
    'isoir138': 'iso8859-8',
    'isoir144': 'iso8859-5',
    'isoir148': 'windows-1254',
    'isoir149': 'cp949',
    'isoir157': 'iso8859-10',
    'isoir199': 'iso8859-14',
    'isoir226': 'iso8859-16',
    'isoir58': 'gbk',
    'isoir6': 'ascii',
    'koi8r': 'koi8-r',
    'koi8u': 'koi8-u',
    'korean': 'cp949',
    'ksc5601': 'cp949',
    'ksc56011987': 'cp949',
    'ksc56011989': 'cp949',
    'l1': 'windows-1252',
    'l10': 'iso8859-16',
    'l2': 'iso8859-2',
    'l3': 'iso8859-3',
    'l4': 'iso8859-4',
    'l5': 'windows-1254',
    'l6': 'iso8859-10',
    'l8': 'iso8859-14',
    'latin1': 'windows-1252',
    'latin10': 'iso8859-16',
    'latin2': 'iso8859-2',
    'latin3': 'iso8859-3',
    'latin4': 'iso8859-4',
    'latin5': 'windows-1254',
    'latin6': 'iso8859-10',
    'latin8': 'iso8859-14',
    'latin9': 'iso8859-15',
    'ms936': 'gbk',
    'mskanji': 'shift_jis',
    'pt154': 'ptcp154',
    'ptcp154': 'ptcp154',
    'r8': 'hp-roman8',
    'roman8': 'hp-roman8',
    'shiftjis': 'shift_jis',
    'tis620': 'cp874',
    'unicode11utf7': 'utf-7',
    'us': 'ascii',
    'usascii': 'ascii',
    'utf16': 'utf-16',
    'utf16be': 'utf-16-be',
    'utf16le': 'utf-16-le',
    'utf8': 'utf-8',
    'windows1250': 'cp1250',
    'windows1251': 'cp1251',
    'windows1252': 'cp1252',
    'windows1253': 'cp1253',
    'windows1254': 'cp1254',
    'windows1255': 'cp1255',
    'windows1256': 'cp1256',
    'windows1257': 'cp1257',
    'windows1258': 'cp1258',
    'windows936': 'gbk',
    'x-x-big5': 'big5'}

tokenTypes = {
    "Doctype":0,
    "Characters":1,
    "SpaceCharacters":2,
    "StartTag":3,
    "EndTag":4,
    "EmptyTag":5,
    "Comment":6,
    "ParseError":7
}

tagTokenTypes = frozenset((tokenTypes["StartTag"], tokenTypes["EndTag"], 
                           tokenTypes["EmptyTag"]))


prefixes = dict([(v,k) for k,v in namespaces.iteritems()])
prefixes["http://www.w3.org/1998/Math/MathML"] = "math"

class DataLossWarning(UserWarning):
    pass

class ReparseException(Exception):
    pass
